我实际上尝试做一些更复杂的事情,但在我尝试使用以下代码之前:
CREATE OR REPLACE FUNCTION delete_auto() RETURNS voID AS$BODY$DECLAREt text;tbl_array text[] = array["ID: 889197824 CH: 0006 Messdaten2","ID: 889197824 CH: 0006 Messdaten3","ID: 889197824 CH: 0006 Messdaten4"];BEGIN FOREACH t IN ARRAY tbl_array LOOPDROP table t;END LOOP;END; $BODY$ LANGUAGE plpgsql VolATILE COST 100;ALTER FUNCTION delete_auto() OWNER TO postgres;
函数在我看来非常正确,但它不会丢弃表,在执行它之后实际上什么也没做.我刚刚在日志中出现这样的错误:
table »t« does not exist.
我也尝试使用varchar []代替text []但不能正常工作.任何帮助,将不胜感激
解决方法 有一些错误:>您不能对字符串文字使用双引号(它用于区分大小写的sql标识符)
>您应该将动态sql用于参数化DDL语句(语句EXECUTE). DDL语句没有执行计划,这些语句不支持参数化(你不应该在那里使用变量)
DO $$DECLARE tables varchar[] := ARRAY['t1','t2']; t varchar;BEGIN FOREACH t IN ARRAY tables LOOP EXECUTE format('DROP table %I',t); END LOOP;END;$$;总结
以上是内存溢出为你收集整理的数组 – plpgsql text [] varchar []数组不起作用全部内容,希望文章能够帮你解决数组 – plpgsql text [] varchar []数组不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)