Hello,

Here is a test function which should help me do understand some MaxDB basics. There is an IN parameter which should be returned at the end of the process. But it doesn't work as expected.

According to my tests :

- Each Try...Catch... statement is executed as values are inserted into the AAA table. - With the Try...Catch statement surrounding the While loop the function doesn't return anything. If I remove the Try...Catch statement (including the loop it contains) the function works as expected

Could someone help me to understand what my mistake with this Try...Catch block is ?

Thanks in advance.
Kind Regards

Vincent Robidet

MaxDB 7.6.0.12
SqlStudio 7.6.0.12


CREATE FUNCTION REMPLACEFONCTIONS125(DFORMULE VARCHAR) RETURNS VARCHAR AS
  VAR
  FA  VARCHAR(255);
  DEF  VARCHAR(255);
  FORM  VARCHAR(255);
  ROWID CHAR(8) BYTE;
SET FA = DFORMULE; TRY CREATE TABLE TEMP.COPIEFONCTION(DEFINITION VARCHAR(255), FORMULE VARCHAR(255)); CATCH
 IF $RC <> 0 THEN STOP ($RC, 'Unexpected error 2');


/* Problem */
TRY
 /*Liste des fonctions dans la table formule*/
INSERT INTO TEMP.COPIEFONCTION SELECT DEFINITION, FORMULE FROM DBA.FORMULE;


  WHILE $RC<>100 DO
  BEGIN

     DECLARE CFONCTION CURSOR FOR SELECT SYSKEY, DEFINITION, FORMULE
     FROM TEMP.COPIEFONCTION;

     FETCH CFONCTION INTO :ROWID, :DEF, :FORM;
     DELETE FROM TEMP.COPIEFONCTION WHERE SYSKEY = :ROWID;
INSERT INTO DBA.AAA (LIBELLE) VALUES('essai2');
  END;

  INSERT INTO DBA.AAA (LIBELLE) VALUES('essai3');
CATCH
IF $RC <> 100 THEN STOP ($RC, 'Prob dans la boucle');
/* problem */


 INSERT INTO DBA.AAA (LIBELLE) VALUES('essai4');


TRY
 DROP TABLE TEMP.COPIEFONCTION;
 INSERT INTO DBA.AAA (LIBELLE) VALUES('essai5');
CATCH
IF $RC <> 0 THEN STOP ($RC, 'Unexpected error3');

TRY
 RETURN FA;
CATCH
IF $RC <> 0 THEN STOP ($RC, ' prob return ');

--
MaxDB Discussion Mailing List
For list archives: http://lists.mysql.com/maxdb
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to