如何将参数值添加到pgadmin sql查询?

时间:2015-10-07 15:08:30

标签: sql postgresql parameters pgadmin

在pgadmin3中,我想使用参数化查询(为了更快的调试,只需从我的php文件中复制并粘贴查询)。但我还没有找到添加$1$2 ...参数值的选项。有可能吗?

这是我在循环中构建的查询,遵循here的NULL测试建议:

SELECT EXISTS(SELECT 1
              FROM tax
              WHERE (addby=$1 or addby<>$1)
                    AND (adddate=$2 or adddate<>$2)
                    AND ($3 IS NULL AND nome IS NULL OR nome=$3)
                    AND ($4 IS NULL AND rank IS NULL OR rank=$4)
                    AND ($5 IS NULL AND pai IS NULL OR pai=$5)
                    AND ($6 IS NULL AND valido IS NULL OR valido=$6)
                    AND ($7 IS NULL AND sinonvalid IS NULL OR sinonvalid=$7)
                    AND ($8 IS NULL AND espec IS NULL OR espec=$8)
                    AND ($9 IS NULL AND public IS NULL OR public=$9)
       );

请注意,手动替换所有参数是单调乏味的,容易出错且可能(我希望)不必要。

提前致谢。

2 个答案:

答案 0 :(得分:14)

我只知道两种方式。

首先使用PREPARED STATEMENT(PostgreSQL手册后的示例):

PREPARE usrrptplan (int) AS
    SELECT * FROM users u, logs l
    WHERE u.usrid=$1 AND u.usrid=l.usrid AND l.date = $2;

EXECUTE usrrptplan(1, current_date);
  

PREPARE创建一个准备好的声明。   执行PREPARE语句时,将解析,分析和重写指定的语句。随后发出EXECUTE命令时,将计划并执行准备好的语句。

     

预处理语句可以采用参数:在执行语句时替换为语句的值。创建预准备语句时,请使用$ 1,$ 2等按位置引用参数

     

预准备语句仅在当前数据库会话期间持续。当会话结束时,忘记准备好的语句,因此必须重新创建它才能再次使用。

其次是通过适当的值“查找并替换”$1$2,...等。但你想避免这个。

答案 1 :(得分:0)

在DBeaver中,您可以像在代码中一样在查询中使用参数,因此可以使用:

select * from accounts where id = :accountId

运行查询时,DBeaver将询问您:accountId的值并运行查询。