PostgreSQL:如何从命令行传递参数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (65)

我在脚本中有一个比较详细的查询,它使用?占位符。我想直接从psql命令行(脚本之外)测试这个查询。我不想进去,把所有的?对于实际值,我想在查询之后传递参数。

例子:

SELECT  * 
FROM    foobar
WHERE   foo = ?
   AND  bar = ?
    OR  baz = ?  ;

寻找类似于:

%> {select * from foobar where foo=? and bar=? or baz=? , 'foo','bar','baz' };
提问于
用户回答回答于

您可以使用-v结构,例如

psql -v v1=12 -v v2="'Hello World'"

然后将SQL中的变量引用为:V1:V2等。

select * from table_1 where id = :v1;
用户回答回答于

在PostgreSQL中发现,您可以PREPARE

使用上面的示例:

PREPARE foo(text,text,text) AS
    SELECT  * 
    FROM    foobar
    WHERE   foo = $1
       AND  bar = $2
        OR  baz = $3  ;
EXECUTE foo('foo','bar','baz');
DEALLOCATE foo;

扫码关注云+社区