Subject | UDFs and Exceptions |
---|---|
Author | firebird@spence.users.panix.com |
Post date | 2006-08-03T13:46:12Z |
Is there a wish list?
It's pretty clear that UDFs can't provoke an SQL error, which is unfortunate
for me, because I have a Regular Expression UDF and it would've been
great if I could've returned an error in this way when the pattern had an
error (as opposed to not matching). I can see that this would be tough to
do
for the general case, but if you can do by descriptor argument passing, ISTM
that with a little additional work, you could pass a callback address so
that the
UDF could trigger an SQL error to the client.
So then I tried creating a stored procedure as an intermediary, which could
detect the pattern error and raise an exception. Unfortunately, it appears
that SPs can't be used as part of a predicate. Is there a way around this?
Also, when you use by-descriptor argument passing, can you affect the
copy that the client has (like a Pascal var parameter)? I'm thinking not,
but
it never hurts to ask.
Finally, is there a way to return more than one thing from a UDF (like an
array)?
Michael D. Spence
Mockingbird Data Systems, Inc.
[Non-text portions of this message have been removed]
It's pretty clear that UDFs can't provoke an SQL error, which is unfortunate
for me, because I have a Regular Expression UDF and it would've been
great if I could've returned an error in this way when the pattern had an
error (as opposed to not matching). I can see that this would be tough to
do
for the general case, but if you can do by descriptor argument passing, ISTM
that with a little additional work, you could pass a callback address so
that the
UDF could trigger an SQL error to the client.
So then I tried creating a stored procedure as an intermediary, which could
detect the pattern error and raise an exception. Unfortunately, it appears
that SPs can't be used as part of a predicate. Is there a way around this?
Also, when you use by-descriptor argument passing, can you affect the
copy that the client has (like a Pascal var parameter)? I'm thinking not,
but
it never hurts to ask.
Finally, is there a way to return more than one thing from a UDF (like an
array)?
Michael D. Spence
Mockingbird Data Systems, Inc.
[Non-text portions of this message have been removed]