Subject | Stored Procedure Help |
---|---|
Author | Ben Short |
Post date | 2011-10-20T20:44:15Z |
Hi,
I'm trying to create a stored procedure that executes another stored
procedure for each record returned by the select.
My firebird version is 2.1.3
Here are my 2 stored procedures....
SET TERM ^;
CREATE OR ALTER PROCEDURE is_message_hidden( messageId NUMERIC(18,0),
activeAtTime NUMERIC(18,0) )
RETURNS (hidden char(1))
AS
BEGIN
hidden = 1;
END^
SET TERM ; ^
SET TERM ^;
CREATE OR ALTER PROCEDURE get_active_messages_server( serverClientId
INTEGER, activeAtTime NUMERIC(18,0) )
RETURNS (
id NUMERIC(18, 0),
messageId NUMERIC(18,0),
messageVersion NUMERIC(18,0),
siteNumber NUMERIC(18,0),
receivedTime NUMERIC(18,0),
sentTime NUMERIC(18,0),
expiryTime NUMERIC(18,0),
slugline BLOB SUB_TYPE TEXT,
hidden CHAR(1)
)
AS
BEGIN
FOR
SELECT localid, messageid, messageVersion, siteNumber,
localReceivedTime, sentTime, expireyTime, slugline
FROM TYRDISP__MESSAGE msg
WHERE msg.localReceivedTime <= :activeAtTime AND msg.expireyTime >
:activeAtTime
INTO :id, :messageId, :messageVersion, :siteNumber, :receivedTime,
:sentTime, :expiryTime, :slugline
DO
BEGIN
EXECUTE PROCEDURE is_message_hidden(:messageId, activeAtTime)
RETURNING_VALUES :hidden
SUSPEND;
END
END^
SET TERM ; ^
When I use isql to execute the DDL the get_active_messages_server procedure
fails with the following error
SQL> SET TERM ^;
SQL> CREATE OR ALTER PROCEDURE get_active_messages_server( serverClientId
INTEGER, activeAtTime NUMERIC(18,0) )
CON> RETURNS (
CON> id NUMERIC(18, 0),
CON> messageId NUMERIC(18,0),
CON> messageVersion NUMERIC(18,0),
CON> siteNumber NUMERIC(18,0),
CON> receivedTime NUMERIC(18,0),
CON> sentTime NUMERIC(18,0),
CON> expiryTime NUMERIC(18,0),
CON> slugline BLOB SUB_TYPE TEXT,
CON> hidden CHAR(1)
CON> )
CON> AS
CON> BEGIN
CON> FOR
CON> SELECT localid, messageid, messageVersion, siteNumber,
localReceivedTime, sentTime, expireyTime, slugline
CON> FROM TYRDISP__MESSAGE msg
CON> WHERE msg.localReceivedTime <= :activeAtTime AND
msg.expireyTime > :activeAtTime
CON> INTO :id, :messageId, :messageVersion, :siteNumber, :receivedTime,
:sentTime, :expiryTime, :slugline
CON> DO
CON> BEGIN
CON> EXECUTE PROCEDURE is_message_hidden(:messageId,
activeAtTime)
CON> RETURNING_VALUES :hidden
CON> SUSPEND;
CON> END
CON> END^
Statement failed, SQLCODE = -104
Dynamic SQL Error
-SQL error code = -104
-Token unknown - line 24, column 25
-SUSPEND
SQL> SET TERM ; ^
Any ideas what I am doing wrong?
Regards
Ben
[Non-text portions of this message have been removed]
I'm trying to create a stored procedure that executes another stored
procedure for each record returned by the select.
My firebird version is 2.1.3
Here are my 2 stored procedures....
SET TERM ^;
CREATE OR ALTER PROCEDURE is_message_hidden( messageId NUMERIC(18,0),
activeAtTime NUMERIC(18,0) )
RETURNS (hidden char(1))
AS
BEGIN
hidden = 1;
END^
SET TERM ; ^
SET TERM ^;
CREATE OR ALTER PROCEDURE get_active_messages_server( serverClientId
INTEGER, activeAtTime NUMERIC(18,0) )
RETURNS (
id NUMERIC(18, 0),
messageId NUMERIC(18,0),
messageVersion NUMERIC(18,0),
siteNumber NUMERIC(18,0),
receivedTime NUMERIC(18,0),
sentTime NUMERIC(18,0),
expiryTime NUMERIC(18,0),
slugline BLOB SUB_TYPE TEXT,
hidden CHAR(1)
)
AS
BEGIN
FOR
SELECT localid, messageid, messageVersion, siteNumber,
localReceivedTime, sentTime, expireyTime, slugline
FROM TYRDISP__MESSAGE msg
WHERE msg.localReceivedTime <= :activeAtTime AND msg.expireyTime >
:activeAtTime
INTO :id, :messageId, :messageVersion, :siteNumber, :receivedTime,
:sentTime, :expiryTime, :slugline
DO
BEGIN
EXECUTE PROCEDURE is_message_hidden(:messageId, activeAtTime)
RETURNING_VALUES :hidden
SUSPEND;
END
END^
SET TERM ; ^
When I use isql to execute the DDL the get_active_messages_server procedure
fails with the following error
SQL> SET TERM ^;
SQL> CREATE OR ALTER PROCEDURE get_active_messages_server( serverClientId
INTEGER, activeAtTime NUMERIC(18,0) )
CON> RETURNS (
CON> id NUMERIC(18, 0),
CON> messageId NUMERIC(18,0),
CON> messageVersion NUMERIC(18,0),
CON> siteNumber NUMERIC(18,0),
CON> receivedTime NUMERIC(18,0),
CON> sentTime NUMERIC(18,0),
CON> expiryTime NUMERIC(18,0),
CON> slugline BLOB SUB_TYPE TEXT,
CON> hidden CHAR(1)
CON> )
CON> AS
CON> BEGIN
CON> FOR
CON> SELECT localid, messageid, messageVersion, siteNumber,
localReceivedTime, sentTime, expireyTime, slugline
CON> FROM TYRDISP__MESSAGE msg
CON> WHERE msg.localReceivedTime <= :activeAtTime AND
msg.expireyTime > :activeAtTime
CON> INTO :id, :messageId, :messageVersion, :siteNumber, :receivedTime,
:sentTime, :expiryTime, :slugline
CON> DO
CON> BEGIN
CON> EXECUTE PROCEDURE is_message_hidden(:messageId,
activeAtTime)
CON> RETURNING_VALUES :hidden
CON> SUSPEND;
CON> END
CON> END^
Statement failed, SQLCODE = -104
Dynamic SQL Error
-SQL error code = -104
-Token unknown - line 24, column 25
-SUSPEND
SQL> SET TERM ; ^
Any ideas what I am doing wrong?
Regards
Ben
[Non-text portions of this message have been removed]