我有一个 bat 文件,它有以下命令
"C:\Program Files (x86)\pgAdmin III\1.22\psql" -U postgres -h hostname -p 5432 -d TestDB -w -f 1.1.sql -v num_var=1.2
此命令调用具有以下脚本的文件 1.1.sql
DO $$
Begin
If Exists (Select * from pg_statio_user_tables where relname = 'applicationsetting' ) then
update applicationsetting set value = :num_var
where applicationsettingid = '32bdba3b-39f6-4e43-947e-0bfdd4f5d561';
End IF;
End $$;
单击bat文件时,我收到此错误
psql:1.1.sql:9: ERROR: syntax error at or near ":"
LINE 4: update demo set keyvalue = :num_var
但是,如果我不传递任何变量并在更新查询中使用静态值,则代码可以正常工作。
编辑
如果我只使用没有 DO 块和 if 子句的更新查询,代码也可以正常工作。