hallo,

ich hätte eine frage. der unten stehende code stammt aus einer prozedur p1, die ich im programm p9a in einer schleife bei jedem durchlauf aufrufe und bei jedem aufruf mit einem sql-statement (select * from tmp660 where belnr = 'xyz, wobei sich der wert von belnr bei jedem durchlauf ändern kann) als input-parameter fülle.

rufe ich das programm p9a normal per call auf funktioniert alles prächtig.

wenn ich jedoch ein CL darum stricke (hier p9cl genannt) und das programm p9a darin per SBMJOB ausführe, bekomme ich beim ausführen des sql-statements in der prozedur einen fehler mit sqlstate 24501 (fetch auf cursor der nicht geöffnet wurde...).

ich hab nun schon einiges versucht aber mittlerweile gehen mir die ideen aus.

vielleicht kann mir wer helfen (die formatierung des codes funktioniert leider nicht besser, sorry).


vielen dank!




if pi_SqlStmt = *blanks;
return *off;
else;
xStmt = pi_SqlStmt;
endif;




exec SQL
declare SQLCSR15 cursor with hold for DYNSQLSTMF;
exec sql
close SQLCSR15;
exec sql
prepare DYNSQLSTMF from :xStmt;
exec sql
open SQLCSR15;
exec sql
fetch next from SQLCSR15 into :xDGBELNR;




if SQLSTT < SQL_NO_ROW;
exec sql
close SQLCSR15;


return *on;
else;
exec sql
close SQLCSR15;


return *off;
endif;