Thread: calling stored procedure with array paramenter (for psql)

calling stored procedure with array paramenter (for psql)

From
Assad Jarrahian
Date:
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

Re: calling stored procedure with array paramenter (for psql)

From
Michael Fuhr
Date:
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

Re: calling stored procedure with array paramenter (for psql)

From
Assad Jarrahian
Date:
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
>

Re: calling stored procedure with array paramenter (for psql)

From
Michael Fuhr
Date:
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