Select Command in Procedures

Started by Adarsh Sharmaabout 15 years ago2 messagesgeneral
Jump to latest
#1Adarsh Sharma
adarsh.sharma@orkash.com

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

In reply to: Adarsh Sharma (#1)
Re: Select Command in Procedures

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