Based on OutPutType=1, I need to display 2 select statement output. In the below code I am getting following error: (Please note In actual I have 2 different dataset in 2 select statement but here for reference I have written one select for time and another statement used for date)
SQL Error [42601]: An unexpected token "" was found following "". Expected tokens may include: "OM sysibm.sysdummy1'".. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.21.29
CREATE OR REPLACE
PROCEDURE Test.Test1 (
IN OutPutType SMALLINT)
DYNAMIC RESULT SETS 2 LANGUAGE SQL SPECIFIC test1
BEGIN
DECLARE v_cursor_text VARCHAR(5000);
DECLARE v_cursor_text1 VARCHAR(5000);
DECLARE C1 CURSOR WITH RETURN FOR Statement1;
DECLARE C2 CURSOR WITH RETURN FOR Statement2;
IF OutPutType = 1 THEN
SET
v_cursor_text = ' SELECT CURRENT_TIME FROM sysibm.sysdummy1';
v_cursor_text1 = 'SELECT CURRENT_DATE FROM sysibm.sysdummy1';
END IF;
PREPARE Statement1
FROM
v_cursor_text;
PREPARE Statement2
FROM
v_cursor_text1;
OPEN c1;
OPEN C2;
END
Your syntax error results from a missing SET
verb before v_cursor_text1
.
To get the procedure to compile, your sample should read:
--#SET TERMINATOR @
CREATE OR REPLACE PROCEDURE Test.Test1 ( IN OutPutType SMALLINT)
DYNAMIC RESULT SETS 2
LANGUAGE SQL SPECIFIC test1
BEGIN
DECLARE v_cursor_text VARCHAR(5000);
DECLARE v_cursor_text1 VARCHAR(5000);
DECLARE C1 CURSOR WITH RETURN FOR Statement1;
DECLARE C2 CURSOR WITH RETURN FOR Statement2;
IF OutPutType = 1 THEN
SET v_cursor_text = ' SELECT CURRENT_TIME FROM sysibm.sysdummy1';
set v_cursor_text1 = 'SELECT CURRENT_DATE FROM sysibm.sysdummy1';
END IF;
PREPARE Statement1 FROM v_cursor_text;
PREPARE Statement2 FROM v_cursor_text1;
OPEN c1;
OPEN C2;
END@