Search Postgresql Archives

Re: stored procedure multiple call call question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> If I had a single table targ to insert into I would do an
> 
>   INSERT INTO targ SELECT thiscol, thatcol, theothercol FROM FOO.
> 
> The problem is that I have tables targ1, targ2, targn to insert things
into and a
> nice stored procedure myproc which does the insertion into all 3 tables -
> problem is that I dont see how I can effectively do
> 
>    INSERT INTO myproc SELECT thiscol, thatcol, theothercol FROM FOO.
> 
> The only way I can work out how to do this is with another stored
procedure
> which allows me to do:
> 
>    FOR rec IN SELECT thiscol, thatcol, theothercol
>    FROM FOO
>    LOOP
>       PERFORM myproc(rec.thiscol, rec.thatcol, rec.theothercol);
>    END LOOP;
> 
> But is there a way to do this just in SQL only without resorting to
plpgsql or a
> language like C/Java?
> 
> thanks
> 

SELECT myproc(thiscol, thatcol, theothercol) FROM FOO

If you want to use (and explode) the return value of "myproc" you will have
to do:

WITH func_exec AS (
SELECT myproc(thiscol, thatcol, theothercol) FROM FOO
)
SELECT (func_exec.myproc).*
FROM func_exec;

If you do:

SELECT myproc(thiscol, thatcol, theothercol).* FROM FOO

The "myproc" function will be executed one time for every output *column*
defined; which is likely to cause the statement to fail (since you'd be
inserting the same exact data multiple times).

David J.





-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux