Subject | delayed suspend |
---|---|
Author | peppepolpo |
Post date | 2009-06-04T14:45:59Z |
is there any plan to change the way SUSPEND works inside stored procedures (in future firebird versions) ?
What happens now is well described in
http://www.oracle.com/technology/oramag/oracle/04-nov/o64asktom.html (see pipelined function section)
Please note that
1. "pipelined" in oracle means "Selectable procedure" "Pipe Row" is like the "suspend" directive
2. "I will not have to wait for PL/SQL to process all 1,000,000 rows to get the first row" seems to describe what currently happens with firedbird :)
"
note the use of the pipe row directive in PL/SQLthat is the magic that makes a pipelined function really interesting. The pipe row directive returns data to the client immediately, meaning that I am getting output from this function in my client routine before the function generates the last row of data. If the cursor I send to this pipelined function returns 1,000,000 rows, I will not have to wait for PL/SQL to process all 1,000,000 rows to get the first row; data will start coming back as soon as it is ready. That is why these are called pipelined functions: Data streamsas if in a big pipefrom the cursor to the PL/SQL function to the caller.
"
What happens now is well described in
http://www.oracle.com/technology/oramag/oracle/04-nov/o64asktom.html (see pipelined function section)
Please note that
1. "pipelined" in oracle means "Selectable procedure" "Pipe Row" is like the "suspend" directive
2. "I will not have to wait for PL/SQL to process all 1,000,000 rows to get the first row" seems to describe what currently happens with firedbird :)
"
note the use of the pipe row directive in PL/SQLthat is the magic that makes a pipelined function really interesting. The pipe row directive returns data to the client immediately, meaning that I am getting output from this function in my client routine before the function generates the last row of data. If the cursor I send to this pipelined function returns 1,000,000 rows, I will not have to wait for PL/SQL to process all 1,000,000 rows to get the first row; data will start coming back as soon as it is ready. That is why these are called pipelined functions: Data streamsas if in a big pipefrom the cursor to the PL/SQL function to the caller.
"