使用psql
,似乎可以使用pset somevar 'hello'
设置命名参数。然而,似乎没有办法设置像$1
这样的位置参数。这使得粘贴使用位置参数的SQL代码段变得困难。在sqlite3 CLI中,可以为此目的执行.param set ?1 'hello'
。如何使用psql
执行此操作?
您需要set
(而不是pset
!(来设置psql变量。
然后,您可以使用SQL插值将这些变量插入到SQL命令中,并可以选择引用您的值。演示:
test=> set a 10
test=> set foo bar
test=> set col1 column1
test=> set col2 'Col 2'
test=> echo :a :'foo' :col1 :"col2"
10 'bar' column1 "Column 2"
test=> SELECT :a AS :col1, :'foo' AS :"col2";
column1 | "Col 2"
---------+---------
10 | bar
(1 row)
不确定如何";位置自变量";进入这个。。。
您可以使用准备好的语句:
PREPARE stmt(integer) AS
SELECT name FROM person WHERE id = $1;
EXECUTE stmt(42);