Hi
this must be easy but it is giving me grief - I am trying to test an SP I have just written using Datastudio 2.2.1.0 :
CREATE OR REPLACE PROCEDURE SP_1
(
IN P_GUID VARCHAR(37),
OUT P_FILE_UID VARCHAR(37),
OUT P_SERVICE_ID VARCHAR(10),
OUT P_ERROR VARCHAR(4000)
)
...
This is supposed to:
delete the row from the table identified by 'NAME.1', but return the file uid and service id values from the row before it does.
If there is an error then P_ERROR should be populated.
I have written the SP and it compiles. Now I want to test it with something like:
BEGIN
DECLARE P_FILE_UID VARCHAR(37);
DECLARE P_SERVICE_ID VARCHAR(10);
DECLARE P_ERROR VARCHAR(4000);
CALL SP_1('NAME.1', P_FILE_UID, P_SERVICE_ID, P_ERROR);
P1: BEGIN ATOMIC
SELECT P_FILE_UID, P_SERVICE_ID, P_ERROR FROM STATUS_MSG;
END P1;
END<<
( where << is our statement termination tag)
this fails to compile with the follwoing error msg:
An unexpected token "SELECT P_FILE_UID, P_SERVICE_ID, P_ERROR " was found following ")". Expected tokens may include: "
P1: BEGIN ATOMIC
".. SQLCODE=-104, SQLSTATE=42601, DRIVER=3.61.65
I have tried BEGIN ATOMIC instead of begin - but to no avail
HELP!!!
Many thanks
10Pints
DETAILS of SP:
CREATE OR REPLACE PROCEDURE SP_1
(
IN P_GUID VARCHAR(37),
OUT P_FILE_UID VARCHAR(37),
OUT P_SERVICE_ID VARCHAR(10),
OUT P_ERROR VARCHAR(4000)
)
SPECIFIC SP_1
LANGUAGE SQL
BEGIN
DECLARE SQLCODE INT;
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
GET DIAGNOSTICS EXCEPTION 1 P_ERROR = MESSAGE_TEXT;
SET P_ERROR = SQLCODE;
END;
SET P_ERROR = 0;
SET P_FILE_UID = 0; -- NOT FOUND
SELECT FILE_UID, SERVICE_ID INTO P_FILE_UID, P_SERVICE_ID FROM TBL_STATUS_MSG WHERE R_GUID = P_GUID;
IF( P_FILE_UID <> 0)
THEN
DELETE FROM STATUS_MSG WHERE GUID = P_GUID;
ELSE
SET P_SERVICE_ID = 0;
END IF;
END<<
INSERT INTO STATUS_MSG (FILE_UID, R_GUID, SERVICE_ID) VALUES('FILE_UID.1', 'R.1', 'SERVICE.1')<<
INSERT INTO IMS_RTCA_STATUS_MSG (FILE_UID, R_GUID, SERVICE_ID) VALUES('FILE_UID.2', 'R.2', 'SERVICE.2')<<
SELECT * FROM STATUS_MSG<<