Обсуждение: calling stored procedure with array paramenter (for psql)
I have a pg_psql stored procedure getlms(_int4) from psql SELECT * fROM get_lms(ARRAY[12,23,34]); that does not work. How do I pass an array to a function in psql? Please help. Thanks. -assad
On Mon, Jan 09, 2006 at 05:33:53PM -0700, Assad Jarrahian wrote: > I have a pg_psql stored procedure > > getlms(_int4) > > from psql > > SELECT * fROM get_lms(ARRAY[12,23,34]); > > that does not work. How do I pass an array to a function in psql? Could you explain what "does not work" means? Are you getting an error? If so, what's the error message? Are those the real function names? They don't match so that could be the problem (one is getlms, the other is get_lms). If that's not it then please post a simple but complete example. -- Michael Fuhr
CREATE OR REPLACE FUNCTION getlms(_int4) RETURNS SETOF tp_locationmessage_object AS $BODY$ DECLARE ....... SELECT * FROM getLMs(<what_goes_here>); <what_goes_here> ... so lets say I want to send an array contain 1,23,34 ... how do I do that .. whats the syntax? On 1/9/06, Michael Fuhr <mike@fuhr.org> wrote: > On Mon, Jan 09, 2006 at 05:33:53PM -0700, Assad Jarrahian wrote: > > I have a pg_psql stored procedure > > > > getlms(_int4) > > > > from psql > > > > SELECT * fROM get_lms(ARRAY[12,23,34]); > > > > that does not work. How do I pass an array to a function in psql? > > Could you explain what "does not work" means? Are you getting an > error? If so, what's the error message? > > Are those the real function names? They don't match so that could > be the problem (one is getlms, the other is get_lms). If that's > not it then please post a simple but complete example. > > -- > Michael Fuhr >
On Mon, Jan 09, 2006 at 08:17:17PM -0700, Assad Jarrahian wrote: > CREATE OR REPLACE FUNCTION getlms(_int4) > RETURNS SETOF tp_locationmessage_object AS > $BODY$ > DECLARE > ....... > > > SELECT * FROM getLMs(<what_goes_here>); > > <what_goes_here> ... so lets say I want to send an array contain 1,23,34 ... > > how do I do that .. whats the syntax? Either of the following should work: SELECT * FROM getlms(ARRAY[1,23,34]); SELECT * FROM getlms('{1,23,34}'); The first looks like what you said you tried already, so if it still doesn't work then please post a complete example. The problem might be in the function body, not in how you're calling the function, so we need to see what the function is doing. -- Michael Fuhr