EXECUTE FORMAT() USING在postgres中显示错误



我将直接进入代码,而不是解释太多

execute format('
"$1" = select "Source1" from temp_tables._%s;
'::text, (translate("Song_Id_"::text, '-', '_')))
using "Source1__";

表是动态创建的,表名没有问题,因为我已经使用该表向其中插入了一些数据。如果我运行这段代码,我得到的错误是

ERROR:  syntax error at or near "$1"
LINE 1: $1 = select "Source1" from temp_tables._24af1593_3539_49fd_9...
^
QUERY:  $1 = select "Source1" from temp_tables._24af1593_3539_49fd_9ef4_29307f301d38;

我也试过其他方法,比如

execute
'$1 = select "Source1" from temp_tables._' || (translate("Song_Id_"::text, '-', '_')) ||';'
using "Source1__";

即使这样也会给出相同的错误。

注:"Source1__"是在存储过程中声明的text类型的变量,在存储过程中,其他所有内容都将同时执行。

这是错误的。EXECUTE命令只接受SQL语句。没有像var = SELECT ...这样的表述。更重要的是,您可以通过使用USING子句传递值。你不能传递任何对变量的引用。解决方法很简单。只使用INTO条款

EXECUTE 'SELECT ... ' INTO target_plpgsql_variable

请阅读相关文档。不幸的是,由于混合了两种非常不同的语言,存储过程的某些部分并不是特别直观。最好是阅读文档,因为如果不了解可能性和语法,很难找到正确的解决方案。

最新更新