PostgreSQL:如何从命令行传递多个参数?
关于psql命令行传递多个变量到PL/pgSQL的写法确认
我参考了一篇主题内容,但因声望不足无法在该主题下评论,故在此求助。
通过以下方式在命令行定义两个变量:
psql ...... -v v1=50 -v v2=100
我知道仅传递单个变量的写法可以正常运行:
SELECT format($$ DO $do$ DECLARE _number1 numeric := %L; BEGIN RAISE NOTICE '%%', _number1; END $do$; $$, :'v1')\gexec
但不清楚如何处理多个变量的情况,我尝试了如下写法,希望得到确认是否正确:
SELECT format($$ DO $do$ DECLARE _number1 numeric := %L; _number2 numeric := %L; BEGIN RAISE NOTICE '%%', _number1; RAISE NOTICE '%%', _number2; END $do$; $$, :'v1',:'v2')\gexec
你写的多个变量的写法是正确的,可以正常执行。
补充说明:
format函数中的两个%L占位符会依次匹配后面传入的:'v1'和:'v2',将变量值以安全的字面量形式插入到PL/pgSQL代码中;- 执行
\gexec后,会运行生成的DO块,最终控制台会输出两条NOTICE信息,分别显示50和100。
内容的提问来源于stack exchange,提问作者jojo
相关产品推荐
相关产品推荐

