Hi there,
I do have an issue with a cursor with dynamically creating the SQL statement.
The below works okay.
CREATE PROCEDURE TEST_SQL
(IN P_ACCNUM VARCHAR(6),
IN P_CMPNAME VARCHAR(25),
IN P_BOID VARCHAR(3))
DYNAMIC RESULT SETS 1
------------------------------------------------------------------------
-- SQL Stored Procedure
------------------------------------------------------------------------
P1: BEGIN
-- Declare cursor
DECLARE CURSOR1 CURSOR WITH RETURN FOR
SELECT * FROM CLIENT_FINDER.CLI
WHERE CLIENT_FINDER.CLI.ACCNUM Like P_ACCNUM || '%';
-- Cursor left open for client application
OPEN CURSOR1;
END P1
The following SP fails with message
A database manager error occurred.SQLCODE: -401, SQLSTATE: 42818 - The data types of the operands for the operation "=" are not compatible.. SQLCODE=-401, SQLSTATE=42818, DRIVER=3.57.86
CREATE PROCEDURE BASECLIDATA_SQL ( IN P_ACCNUM VARCHAR(6),
IN P_ACCOFFICENUM VARCHAR(3),
IN P_CMPNAME VARCHAR(25) )
DYNAMIC RESULT SETS 1
------------------------------------------------------------------------
-- SQL Stored Procedure
-- p_AccNum
-- p_AccOfficeNum
-- p_CMPName
------------------------------------------------------------------------
P1: BEGIN
DECLARE V_TABLE_COUNT VARCHAR(200);
DECLARE V_SQL VARCHAR(200);
DECLARE V_STMT STATEMENT;
-- Declare cursor
DECLARE CURSOR1 CURSOR WITH RETURN FOR V_STMT;
SET V_SQL = 'SELECT * FROM CLIENT_FINDER.CLI
WHERE CLIENT_FINDER.CLI.ACCNUM = ' || P_ACCNUM;
PREPARE V_STMT FROM V_SQL;
OPEN CURSOR1;
--FETCH CURSOR1 INTO V_TABLE_COUNT;
-- Cursor left open for client application
END P1
Can anyone help?
Thanks in advance