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]