PSQL procedures need to be able to RETURN a blob as a blob_id (GDS_QUAD)
------------------------------------------------------------------------
Key: CORE-5811
URL: http://tracker.firebirdsql.org/browse/CORE-5811
Project: Firebird Core
Issue Type: New Feature
Components: Engine
Environment: PSQL needs to be able to read and pass blob_ids like a
normal SQL statement
Reporter: Ray Holme
There needs to be a return type for blobs that acts like a standard SQL
statement would
- simplest example of what is needed (FB_QUAD or ISC_QUAD or GDS_QUAD or ????)
----
create or alter procedure blob_me returns (blob_id ???????) as
begin
for select some_blob from some_table into :blob_id do suspend; end
end^
----
The example above is absurd but is the simplest illustration I can come up with.
The real need is for a procedure to do an elegant tag (performance issues) sort
where one or more fields returned are blobs.
Note that having a "BLOB TYPE N" is also nice and is for working with the
contents of the blob.
In this case the procedure does not want to be working with the contents but
simply to pass the handle down to the program calling
for it to determine what should be done with the blob. Returing the blob
contents to a multi row select with an order by clause
would probably cause truly big performance issues.
The below procedure example (hoaky names, sorry) illustrates the real
underlying need for this
consider all three tables large and the resulting set would be many thousand
rows
--- the need to tag sort this data for perormance should be self evident.
-----+++++
create or alter procedure tag_sort
returns (akey integer. bkey integer. ckey integer,
aval integer, ablob_id ???????, bval varchar(400), cval
varchar(2000), cblob_id ??????) as
begin
for select a.akey, b.bkey, c.ckey
from some_tablea a left outer join some_tableb b on (a.funky = b.funky)
inner join some_tablec c on (b.what = c.what)
where a.something > 3 and b.otherthing in (4,5,6)
order by a.somename desc, b.somevalue, b.othervalue, c.strangevalue
into :akey, :bkey, :ckey do
begin
select aval, ablob_id from some_tablea where akey = :akey into :aval,
:ablob_id;
select bval from some_tableb where bkey = :bkey into
:bval;
select cval, cblob_id from some_tablec where ckey = :ckey into :cval,
:cblob_id;
suspend;
end
end^
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel