在psql中设置占位符参数



使用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);

最新更新