Here is the SP:
--#SET TERMINATOR !
CREATE PROCEDURE execute_immediate (IN in_stmt VARCHAR(1000)
,OUT out_sqlcode INTEGER)
LANGUAGE SQL
MODIFIES SQL DATA
BEGIN
DECLARE sqlcode INTEGER;
DECLARE EXIT HANDLER FOR sqlexception
SET out_sqlcode = sqlcode;
EXECUTE IMMEDIATE in_stmt;
SET out_sqlcode = sqlcode;
RETURN;
END!
I have field HIREDATE char(10)
SELECT DATE( HIREDATE) FROM EMP_SCREEN_EDIT;
1
----------
12/27/1999
1 record(s) selected.
I updated Hiredate using SP - Maked it invalid:
CALL execute_immediate('UPDATE EMP_SCREEN_EDIT SET HIREDATE =
''12/77/1999''',?)
Value of output parameters
--------------------------
Parameter Name : OUT_SQLCODE
Parameter Value : 0
Return Status = 0
After Update:
SELECT HIREDATE FROM EMP_SCREEN_EDIT
HIREDATE
----------
12/77/1999
SELECT DATE(HIREDATE) FROM EMP_SCREEN_EDIT
the string representation of a datetime value is out of range
sqlcode: -181
Now 2 selects using SP:
CALL execute_immediate('SELECT HIREDATE FROM EMP_SCREEN_EDIT',?)
Value of output parameters
--------------------------
Parameter Name : OUT_SQLCODE
Parameter Value : -84
Return Status = 0
CALL execute_immediate('SELECT DATE(HIREDATE) FROM EMP_SCREEN_EDIT',?)
Value of output parameters
--------------------------
Parameter Name : OUT_SQLCODE
Parameter Value : -84
Return Status = 0
Why Stored Procedure returns in both cases -84
What is going on???
--
Message posted via http://www.dbmonster.com