Function Issue!

Function Issue!

am 19.08.2004 03:10:00 von Theo.Galanakis

This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_001_01C48589.40041680
Content-Type: text/plain


Can anyone tell me what is wrong with the function below ?
It throws an ERROR: syntax error at or near "FETCH" at character 551

CREATE OR REPLACE FUNCTION "public"."theo_test2" () RETURNS OPAQUE AS'
BEGIN
declare curr_theo cursor for select * from node_names;
fetch next from curr_theo;
close curr_theo;
END;
'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY DEFINER;


However, this appears to work :
begin;
declare curr_theo cursor for select * from node_names;
fetch next from curr_theo;
close curr_theo;
end;


____________________________________________________________ __________
This email, including attachments, is intended only for the addressee
and may be confidential, privileged and subject to copyright. If you
have received this email in error, please advise the sender and delete
it. If you are not the intended recipient of this email, you must not
use, copy or disclose its content to anyone. You must not copy or
communicate to others content that is confidential or subject to
copyright, unless you have the consent of the content owner.
------_=_NextPart_001_01C48589.40041680
Content-Type: text/html






Function Issue!



Can anyone tell me what is wrong with the function below ?

It throws an ERROR:  syntax error at or near "FETCH" at character 551



CREATE OR REPLACE FUNCTION "public"."theo_test2" () RETURNS OPAQUE AS'

BEGIN

   declare curr_theo cursor for select * from node_names;

   fetch next from curr_theo;

   close curr_theo;

END;

'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY DEFINER;





However, this appears to work :

begin;

 declare curr_theo cursor for select * from node_names;

 fetch next from curr_theo;

 close curr_theo;

end;





____________________________________________________________ __________
This email, including attachments, is intended only for the addressee
and may be confidential, privileged and subject to copyright. If you
have received this email in error, please advise the sender and delete
it. If you are not the intended recipient of this email, you must not
use, copy or disclose its content to anyone. You must not copy or
communicate to others content that is confidential or subject to
copyright, unless you have the consent of the content owner.

------_=_NextPart_001_01C48589.40041680--

Re: Function Issue!

am 19.08.2004 03:36:09 von tgl

Theo Galanakis writes:
> Can anyone tell me what is wrong with the function below ?

> CREATE OR REPLACE FUNCTION "public"."theo_test2" () RETURNS OPAQUE AS'
> BEGIN
> declare curr_theo cursor for select * from node_names;
> fetch next from curr_theo;
> close curr_theo;
> END;
> 'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY DEFINER;

The DECLARE has to go before the BEGIN:

CREATE OR REPLACE FUNCTION "public"."theo_test2" () RETURNS OPAQUE AS'
DECLARE
curr_theo cursor for select * from node_names;
BEGIN
fetch next from curr_theo;
close curr_theo;
END;
'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY DEFINER;

I think you are missing an OPEN step too, and the FETCH syntax is wrong
for plpgsql. Read the plpgsql doc section about using cursors --- it
is not at all identical to what you do in plain SQL.

regards, tom lane

---------------------------(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