Thread: Select Command in Procedures

Select Command in Procedures

From
Adarsh Sharma
Date:
Dear all,

I am able to execute command successfully through CLI or pgAdmin .

create table user_news_new as select record_id,field_name,field_value,news_date from user_news where field_name in ('SOI','RelLoc','Description','Heading','news_date') and field_value != '' ;

But I don't know when I put this command in a procedure, it shows error :

CREATE FUNCTION user10() RETURNS void AS'
DECLARE
BEGIN
create table user_news_new as select record_id,field_name,field_value,news_date from user_news where field_name in ('SOI','RelLoc','Description','Heading','news_date') and field_value != '' ;
END;
' LANGUAGE 'plpgsql';


Error :

globe=# CREATE FUNCTION user10() RETURNS void AS'
globe'# DECLARE
globe'# BEGIN
globe'# create table user_news_new as select record_id,field_name,field_value,news_date from user_news where field_name in ('SOI','RelLoc','Description','Heading','news_date') and field_value != '' ;
globe'# END;
globe'# ' LANGUAGE 'plpgsql';
ERROR:  syntax error at or near "SOI"
LINE 4: ...ue,news_date from user_news where field_name in ('SOI','RelL...
                                                             ^

Please help as I stuck with this issue.


Thanks & Regards

Adarsh Sharma

Re: Select Command in Procedures

From
hubert depesz lubaczewski
Date:
On Thu, Feb 03, 2011 at 02:26:10PM +0530, Adarsh Sharma wrote:
> globe=# CREATE FUNCTION user10() RETURNS void AS'
> globe'# DECLARE
> globe'# BEGIN
> globe'# create table user_news_new as select
> record_id,field_name,field_value,news_date from user_news where
> field_name in ('SOI','RelLoc','Description','Heading','news_date')
> and field_value != '' ;
> globe'# END;
> globe'# ' LANGUAGE 'plpgsql';
> ERROR:  syntax error at or near "SOI"
> LINE 4: ...ue,news_date from user_news where field_name in ('SOI','RelL...
>                                                             ^

please note that you used ' to delimit both function body, and strings
in function body.

so when parser hits the ' character before "SOI" - it assumes it to be
end of function!

simply use $$ quotes around function body, and you should be fine.

Best regards,

depesz

--
Linkedin: http://www.linkedin.com/in/depesz  /  blog: http://www.depesz.com/
jid/gtalk: depesz@depesz.com / aim:depeszhdl / skype:depesz_hdl / gg:6749007