Please help! Functions passing records between them
Guys;
I am begging for your help again.
I can't find a solution to my problem.
I am porting a complex system from Oracle to PostgreSQL and I need to
implement the following:
function 1 does some processing and returns a record (I can declare it
as a row in a view)
function 2 uses func1 to get that record and does some more processing
My problem is that even if I can return a record from my function 1,
function 2 does not read it properly
Here is an example:
create view my_view
as select null as type, null as value, null as timestamp; -- this
is how I "declare" the user-defined data structure (I could not find
any other way)
create function func1()
returns my_view as '
declare
my_record my_view%rowtype;
begin
.....
.....
my_record.type := ''AAA'';
my_record.value := 25;
my_record.timestamp := now(); -- this is for simplicity
return my_record;
end;
' LANGUAGE 'plpgsql';
create function func2()
returns varchar as '
declare
my_record my_view%rowtype;
begin
select func1() into my_record;
return my_record.type;
end;
' LANGUAGE 'plpgsql';
It compiles and runs fine, except that it does not return what it's
supposed to. It gives me some strange huge number, which I assume is
some kind of OID
I know that there are quite a few gurus of PostgreSQL out there -
please help me solve this problem. May be my whole approach is wrong,
but I need to be able to accomplist this: pass some kind of
user-defined structures between function
Thank you so much for your help
Alla Gribov
I had asked something simular a week back.
This should help you :-)
http://fts.postgresql.org/db/mw/msg.html?mid=121203
cheers,
thalis
ps did someone play too much with the majordomo? it screwes up the list addresses in Cc: when I reply to a message
On 12 Jun 2001, Alla wrote:
Show quoted text
Guys;
I am begging for your help again.
I can't find a solution to my problem.
I am porting a complex system from Oracle to PostgreSQL and I need to
implement the following:function 1 does some processing and returns a record (I can declare it
as a row in a view)
function 2 uses func1 to get that record and does some more processingMy problem is that even if I can return a record from my function 1,
function 2 does not read it properlyHere is an example:
create view my_view
as select null as type, null as value, null as timestamp; -- this
is how I "declare" the user-defined data structure (I could not find
any other way)create function func1()
returns my_view as '
declare
my_record my_view%rowtype;
begin
.....
.....
my_record.type := ''AAA'';
my_record.value := 25;
my_record.timestamp := now(); -- this is for simplicityreturn my_record;
end;
' LANGUAGE 'plpgsql';create function func2()
returns varchar as '
declare
my_record my_view%rowtype;
begin
select func1() into my_record;return my_record.type;
end;
' LANGUAGE 'plpgsql';It compiles and runs fine, except that it does not return what it's
supposed to. It gives me some strange huge number, which I assume is
some kind of OIDI know that there are quite a few gurus of PostgreSQL out there -
please help me solve this problem. May be my whole approach is wrong,
but I need to be able to accomplist this: pass some kind of
user-defined structures between functionThank you so much for your help
Alla Gribov
---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql.org so that your
message can get through to the mailing list cleanly