The following is an example of a program that creates a stored procedure "mfexecsptest" using data source "SQLServer 2000" and then retrieves data from "publishers" table using a cursor "c1" with dynamic SQL.
$SET SQL WORKING-STORAGE SECTION. EXEC SQL INCLUDE SQLCA END-EXEC *> after an sql error this has the full message text 01 MFSQLMESSAGETEXT PIC X(250). 01 IDX PIC X(04) COMP-5. EXEC SQL BEGIN DECLARE SECTION END-EXEC *> Put your host variables here if you need to port *> to other COBOL compilers 01 stateParam pic xx. 01 pubid pic x(4). 01 pubname pic x(40). 01 pubcity pic x(20). 01 sql-stat pic x(256). EXEC SQL END DECLARE SECTION END-EXEC PROCEDURE DIVISION. EXEC SQL WHENEVER SQLERROR perform OpenESQL-Error END-EXEC EXEC SQL CONNECT TO 'SQLServer 2000' USER 'SA' END-EXEC *> Put your program logic/SQL statements here EXEC SQL create procedure mfexecsptest (@stateParam char(2) = 'NY' ) as select pub_id, pub_name, city from publishers where state = @stateParam END-EXEC exec sql declare c1 scroll cursor for dsql2 for read only end-exec move "{call mfexecsptest(?)}" to sql-stat exec sql prepare dsql2 from :sql-stat end-exec move "CA" to stateParam exec sql open c1 using :stateParam end-exec display "Testing cursor with stored procedure" perform until exit exec sql fetch c1 into :pubid, :pubname, :pubcity end-exec if sqlcode = 100 exec sql close c1 end-exec exit perform else display pubid " " pubname " " pubcity end-if end-perform EXEC SQL close c1 END-EXEC EXEC SQL DISCONNECT CURRENT END-EXEC EXIT PROGRAM. STOP RUN. *> Default sql error routine / modify to stop program if *> needed OpenESQL-Error Section. display "SQL Error = " sqlstate " " sqlcode display MFSQLMESSAGETEXT *> stop run exit.