Search Postgresql Archives

Re: Fwd: Need help in porting Oracle PL/SQL's OUT paramater based procedures

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Removed -hackers from the mailing-lists. Just noticed it, and I think
this is probably fine on the general list.

Gurjeet Singh wrote:
> On Thu, Feb 12, 2009 at 6:18 PM, Richard Huxton <dev@xxxxxxxxxxxx> wrote:

>> CREATE OR REPLACE FUNCTION f1(IN a integer, INOUT b integer, OUT c
>> integer) RETURNS RECORD AS $$

> You see, you did not pass the third (OUT) parameter when calling the
> function:
> 
>    r := f1(a, b);
> 
> This differs from Oracle syntax where you _need_ to pass the third
> parameter.

That's because pl/pgsql isn't pl/sql. If you want to keep close, you can
just declare "c" as INOUT.

The original problem was that it was a pain to declare types for every
function that returned more than just a simple scalar. The alternative
was to say you returned RECORD, but then you needed to list column-names
when calling the function. Finally, IN/OUT/INOUT was abused to provide
an implicit record-type declaration for you. It's convenient for simple
cases, but it's not actually what I think of as IN/OUT parameters.

> And what if the Oracle function actually returns a value too? How do we
> handle that in the application, because we can't declare RECORD vars in
> Java/perl/python etc.

You can always do something like: SELECT b,c FROM f1(1, 2);


Realistically, I don't think you're going to get one set of queries
running against both RDBMS.

-- 
  Richard Huxton
  Archonet Ltd

-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux