
CREATE OR REPLACE FUNCTION m_tbl(my_var integer) RETURNS voID AS$BODY$DECLAREBEGIN copY ( select my_var ) TO 'c:/temp/out.csv';END;$$LANGUAGE plpgsql;
我收到一个错误:没有这样的列’my_var’.
是的,可以从任何查询中复制,无论它是否引用表.但是,copY是一个不可计划的声明,一个实用程序声明.它不支持查询参数 – 查询参数是PL / Pgsql如何实现将变量插入语句.
所以你不能在PLY中使用PL / Pgsql变量.
您必须使用带有EXECUTE的动态sql.有关示例,请参阅Pl / Pgsql文档. Stack Overflow和https://dba.stackexchange.com/上有很多例子.
就像是:
EXECUTE format(' copY ( select %L ) TO ''c:/temp/out.csv'';',my_var); 如果您希望文件路径是动态的,则同样适用 – 您将使用:
EXECUTE format(' copY ( select %L ) TO %L;',my_var,'file_name.csv'); 它也适用于动态列名称,但您可以使用%I(用于标识符,如“my_name”)而不是%L用于文字,如’my_value’.有关%I和%L的详细信息,请参阅格式文档.
总结以上是内存溢出为你收集整理的postgresql – 在动态COPY语句中使用函数变量全部内容,希望文章能够帮你解决postgresql – 在动态COPY语句中使用函数变量所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)