Problem calling stored procedures. When executing a stored procedure I get a SQL error “A server cursor cannot be opened on the given statement or statements.” SQLCODE = -16937. I have a couple of stored procedures that are getting the same error. Below is my Cobol code and the create statement of the stored procedure I am using. What am I doing wrong? MOVE "UN" TO HV-DBIO EXEC SQL DECLARE spcursor CURSOR for CALL sp_SysGenIO (:HV-DBIO) END-EXEC. EXEC SQL OPEN spcursor END-EXEC. EXEC SQL FETCH spcursor INTO :GENERIC-SYS-UID, :GENERIC-SEQUENCE-NUM END-EXEC. CREATE PROCEDURE [dbo].[sp_SysGenIO] @DbIO Char(02) AS BEGIN DECLARE @SQLfunction Char(02); DECLARE @PriKey INT = 0; SET @SQLfunction = @DbIO -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; SET XACT_ABORT ON; BEGIN TRY BEGIN TRANSACTION tranSysGenIO SELECT GENERIC_SYS_UID, GENERIC_SEQUENCE_NUM FROM SYSGEN WITH (UPDLOCK) WHERE PRIMARY_KEY = @PriKey; IF @SQLfunction = 'UN' UPDATE SYSGEN SET GENERIC_SYS_UID = GENERIC_SYS_UID + 1 WHERE PRIMARY_KEY = @PriKey; IF @SQLfunction = 'SN' UPDATE SYSGEN SET GENERIC_SEQUENCE_NUM = GENERIC_SEQUENCE_NUM + 1 WHERE PRIMARY_KEY = @PriKey; COMMIT TRANSACTION tranSysGenIO; END TRY BEGIN CATCH DECLARE @STATE INT; SET @STATE = ERROR_STATE(); IF XACT_STATE() = -1 BEGIN ROLLBACK TRANSACTION tranSysGenIO; END ELSE IF XACT_STATE() = 1 BEGIN COMMIT TRANSACTION tranSysGenIO; END END CATCH ENDALL: END
↧