Subject | Selecting from a stored proc that has no outputs |
---|---|
Author | Craig Arenson |
Post date | 2010-04-28T15:12:33Z |
Hi
I have a stored proc that looks like this
CREATE PROCEDURE GET_PRODUCTIVITY (
tiepe char(1) character set none)
returns (
name varchar(30) character set none,
short_name varchar(2) character set none,
prod_count integer)
as
BEGIN
exit;
END
Obviously it does absolutely nothing.
My software does a call to this SP as follows
"Select * from GET_PRODUCTIVITY('L')"
This will obviously return nothing.
BUT it is open ended because I can put any logic
inside my SP, and now suddenly my app will get
results (without having to make any changes to my binary).
Now, this works fine in Interbase, when I port to
firebird, I get issues. It seems that I cannot
run a SELECT on a stored proc that doesn't suspend anything.
If I do I get this error
Invalid token.
invalid request BLR at offset 32.
temporary table GET_PRODUCTIVITY cannot foreign reference persistent table .
So now I have to go through all my blank SP's and
change them from exit to suspend;
Obviously this isn't ideal because now instead of
returning nothing, I now have to return a single
null record. This will throw out any logic I have
in my applications whereby I test a recordcount
or whether my dataset is empty.
[Non-text portions of this message have been removed]
I have a stored proc that looks like this
CREATE PROCEDURE GET_PRODUCTIVITY (
tiepe char(1) character set none)
returns (
name varchar(30) character set none,
short_name varchar(2) character set none,
prod_count integer)
as
BEGIN
exit;
END
Obviously it does absolutely nothing.
My software does a call to this SP as follows
"Select * from GET_PRODUCTIVITY('L')"
This will obviously return nothing.
BUT it is open ended because I can put any logic
inside my SP, and now suddenly my app will get
results (without having to make any changes to my binary).
Now, this works fine in Interbase, when I port to
firebird, I get issues. It seems that I cannot
run a SELECT on a stored proc that doesn't suspend anything.
If I do I get this error
Invalid token.
invalid request BLR at offset 32.
temporary table GET_PRODUCTIVITY cannot foreign reference persistent table .
So now I have to go through all my blank SP's and
change them from exit to suspend;
Obviously this isn't ideal because now instead of
returning nothing, I now have to return a single
null record. This will throw out any logic I have
in my applications whereby I test a recordcount
or whether my dataset is empty.
[Non-text portions of this message have been removed]