Обсуждение: ERROR: copyObject: don't know how to copy 611

Поиск
Список
Период
Сортировка

ERROR: copyObject: don't know how to copy 611

От
"Shane McEneaney"
Дата:
I get the error ERROR:  copyObject: don't know how to copy 611
when I try to run the following procedure. The create table is causing
the problem.


CREATE FUNCTION "my_func" (int8) RETURNS int8 AS 'declare  v_my_var ALIAS FOR $1;begin  create table my_table(my_id
int);end;
' LANGUAGE 'plpgsql';


Can anybody explain this?

Thanks in advance,

shane




Re: ERROR: copyObject: don't know how to copy 611

От
Tom Lane
Дата:
"Shane McEneaney" <shane@shadowbox.ie> writes:
> I get the error ERROR:  copyObject: don't know how to copy 611
> when I try to run the following procedure. The create table is causing
> the problem.

> CREATE FUNCTION "my_func" (int8) RETURNS int8 AS '
>  declare
>    v_my_var ALIAS FOR $1;
>  begin
>    create table my_table(my_id int);
>  end;
> ' LANGUAGE 'plpgsql';

> Can anybody explain this?

CREATE TABLE, like most other utility statements, isn't supported by
plpgsql at present.  This is fixed for 7.1 to the extent that you can
do examples like the above, but you still can't pass parameters to
the things --- for example CREATE TABLE $1 (foo int) won't work.

For these sorts of things you might want to consider pltcl or plperl,
which don't attempt to do any pre-parsing of SQL statements.  A little
slower, but much more flexible...
        regards, tom lane