Thread: a problem when poring from Oracle's PL/SQL to PLPGSQL

a problem when poring from Oracle's PL/SQL to PLPGSQL

From
"billy"
Date:
pgsql-hackers:

The following is Oracle's PL/SQL
 if resTypeTableName is nullthen                                                               queryStr := 'select
IntIID,Path FROM aaResourceData' || ' where ResType=''' || srcType || ''' and ResID=''' || srcID || '''';
                                                else
                                                     queryStr := 'select IntIID, Path FROM ' || resTypeTableName || '
whereResType=''' || srcType || ''' and ResID=''' ||                           srcID || '''';
       end if;                                                         
open cursorSrc for queryStr;


Here queryStr is a variable which type is TEXT OR VARCHAR or other string types.

But in  PLPGSQL, we can only open a cursor this way:
    open cursorSrc for select * from testtable;

We cannot substitude "select * from testtable" with a variable.

Is there another way to handle it?

Thank you for your help. :-)


        billy
        billywq@163.com
          2008-06-13





Re: a problem when poring from Oracle's PL/SQL to PLPGSQL

From
Mario Weilguni
Date:
billy schrieb:
> pgsql-hackers:
>
> The following is Oracle's PL/SQL
>
>   if resTypeTableName is null
>     then                                                            
>     queryStr := 'select IntIID, Path FROM aaResourceData' || ' where ResType=''' || srcType || ''' and ResID=''' ||
srcID|| '''';                                                           
 
>       else
             queryStr := 'select IntIID, Path FROM ' || resTypeTableName || ' where ResType=''' || srcType || ''' and
ResID='''||            
 
>                 srcID || '''';                                   
>   end if;                                                        
>
>  open cursorSrc for queryStr;
>
>
> Here queryStr is a variable which type is TEXT OR VARCHAR or other string types.
>
> But in  PLPGSQL, we can only open a cursor this way:
>
>      open cursorSrc for select * from testtable;
>
> We cannot substitude "select * from testtable" with a variable.
>
> Is there another way to handle it?
>
> Thank you for your help. :-)
>   
open cursorSrc for execute queryStr; should work fine

Regards
Mario Weilguni