0

我想使用动态 sql 将 uuid 添加到表中。Hier 是我的代码:

CREATE OR REPLACE FUNCTION "Surrogate_gen"(tblname text) RETURNS void AS
$BODY$DECLARE 
uid UUID;
tablename text;
BEGIN
uid:=(select uuid_generate_v1());
tablename:=tblname;
execute 'INSERT INTO public."'||tablename||'"(surrogate) VALUES('||uid||')';
END
$BODY$
LANGUAGE plpgsql

但是发生了这样的错误: INSERT INTO public."produkt"(surrogate) VALUES(ed520ad0-5aba-11e2-961b-1c4bd605a98d) Syntaxerror: »aba« that is in my uid

如果我不使用动态 sql 可以在此表中添加 uuid。请告诉我为什么会发生这个错误?谢谢

4

1 回答 1

1

最简单的方法是将 to 移到select字符串内部:

BEGIN
tablename:=tblname;
execute 'INSERT INTO public."'||tablename||'"(surrogate) select uuid_generate_v1()';
END
于 2013-01-09T15:22:22.010 回答