[fpc-pascal] fcl-db: oracle SP

Inoussa OUEDRAOGO inoussa12 at gmail.com
Mon Apr 7 19:06:34 CEST 2008


2008/4/7, Bee <bisma at brawijaya.ac.id>:
> I'm new to Oracle.
>
>
> > For a pipelined function, the syntax is :  select * from table( sf() )
> > The other syntax ( 'select sf from dual' ) is for simple function ,
> > which returns single value.
> >
>
>  What's "pipelined function"? "select * from table(sf())" seems to requires
> a table. Does an SF belong to a table?

A pipeline function is an Oracle way to create "selectable"  SQL
function , like the ones in
MS SQL SERVER ( 2000+ ), or Firebird selectable stored procedure.
Below is a simple Oracle sample  :

CREATE OR REPLACE TYPE TYPE_REC_A AS OBJECT(
    INT_FIELD NUMBER(6),
    STR_FIELD Varchar2(60) )
/

CREATE OR REPLACE TYPE TYPE_TABLE_REC_A AS TABLE OF TYPE_REC_A
/

CREATE OR REPLACE FUNCTION FN_GET_LIST_A
    RETURN TYPE_TABLE_REC_A PIPELINED IS
  REC_ROW TYPE_REC_A ;
BEGIN

  REC_ROW := TYPE_REC_A( 1, 'line 1' );
  PIPE ROW ( REC_ROW );

  REC_ROW := TYPE_REC_A( 2, 'line 2' );
  PIPE ROW ( REC_ROW );

  REC_ROW := TYPE_REC_A( 3, 'line 3' );
  PIPE ROW ( REC_ROW );

  RETURN;

END;
/

select * from table( FN_GET_LIST_A() )

-- 
Inoussa O.



More information about the fpc-pascal mailing list