Re: insert select fails inside of function

Поиск
Список
Период
Сортировка
От Benedict Holland
Тема Re: insert select fails inside of function
Дата
Msg-id CAD+mzowd3HC1Vbp2ZHr6N+eSyVpTVS-Q=N7UB1AbJVx_9eVUJg@mail.gmail.com
обсуждение исходный текст
Ответ на Re: insert select fails inside of function  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: insert select fails inside of function  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
Hi Tom,

Thanks for the response. The PG version is 9.0. I can't really give you the text of the function unfortunately. I know though that there isn't any aliasing issues occurring. After commenting out all but one line, I have it down to, not a insert select but a

create temp table t1(id, ...) as
select (a few columns with names that don't match)
where etc.

As by the exact syntax specified http://www.postgresql.org/docs/9.0/static/plpgsql-statements.html:

Tip: Note that this interpretation of SELECT with INTO is quite different from PostgreSQL's regular SELECT INTO command, wherein the INTO target is a newly created table. If you want to create a table from a SELECT result inside a PL/pgSQL function, use the syntax CREATE TABLE ... AS SELECT.

This is the only thing still left uncommented in the function.

Thanks,
~Ben

On Fri, Jun 22, 2012 at 3:44 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Benedict Holland <benedict.m.holland@gmail.com> writes:
> I am scratching my head over this one. I have a basic function which
> populates a table inside of it (declared outside of the function but that
> shouldn't matter)  and it requires something like

> insert into table1 (col1, ...)
> select * from foo

> and I get the error "query has no destination for result data". This is
> surely not the case as it's going directly into the insert statement which
> doesn't have output. Any idea how to get around this particularly annoying
> problem?

What PG version?  Could we see the exact text of the function?  I'm
wondering about aliasing problems stemming from function variables named
similarly to the target table or its columns --- newer PG versions are
brighter about that sort of conflict than older ones.

> I have to say, making the switch from t-sql to postgresql has been
> fairly easy except for function debugging.

RAISE NOTICE is the usual substitute for what I think you were doing on
t-sql.  Also, I think EDB is still supporting their plpgsql debugger, so
you might consider experimenting with that.

                       regards, tom lane

В списке pgsql-general по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: insert select fails inside of function
Следующее
От: Tom Lane
Дата:
Сообщение: Re: insert select fails inside of function