An HCOSS SQL CLR stored procedure can:
To call an HCOSS stored procedure that returns no result sets, use the CALL embedded SQL statement. For complete details on using the CALL statement, see the topic CALL.
If a stored procedure returns one or more result sets, you receive the result sets using a series of embedded SQL statements. First, use the CALL statement to call the stored procedure. Next, use the ASSOCIATE LOCATORS statement to define an appropriate number of result sets. Then, issue one ALLOCATE CURSOR statement for defined result set. For example, the following code returns two result sets by associating two result set locators with two allocated cursors, in effect mapping the result sets to the cursors:
EXEC SQL CALL MYPROC(:hv-country)
END-EXEC
EXEC SQL
ASSOCIATE LOCATORS (:RS1,:RS2) WITH PROCEDURE MYPROC
END-EXEC
EXEC SQL
ALLOCATE C1 CURSOR FOR RESULT SET :RS1
END-EXEC
EXEC SQL
ALLOCATE C2 CURSOR FOR RESULT SET :RS2
END-EXEC
At this point, use the FETCH statement to fetch each result set, just like any other SQL cursor. You can also interleave access to these cursors at the same time. For example, using the scenario provided above, you could fetch from C1, and then immediately fetch from C2.
Finally, when you are done with cursor processing, use the CLOSE statement to end result set processing.
EXEC SQL
DECLARE C1 SCROLL CURSOR
WITH RETURN TO CALLER
FOR
SELECT CUSTOMERID from CUSTOMERS
END-EXEC
EXEC SQL
OPEN C1
END-EXEC
COBOL stored procedures compiled with SQL(DIALECT=MAINFRAME) emulate mainframe behavior and return result set locators rather than actual result sets. When calling applications written in languages other than COBOL and PL/I, and for COBOL and PL/I applications that have not been compiled with SQL(DIALECT=MAINFRAME), build your stored procedures with SQL(OPTION=NORSLOCATORS). Result sets are then returned as regular SQL Server result sets.