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

Rod*_*igo 13 sql postgresql parameters pgadmin

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

这是我在循环中构建的查询,遵循此处的 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)
       );
Run Code Online (Sandbox Code Playgroud)

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

提前致谢.

Gab*_*ger 15

我只知道两种方式.

首先是使用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);
Run Code Online (Sandbox Code Playgroud)

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

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

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

二是"查找和替换" $1,$2通过正确的价值观,...等等.但你想避免这个.

  • sql developer只是发送一个对话框提示,让你添加它们,甚至保存你的最后一个值,非常方便 (4认同)
  • 我切换到 DBeaver (https://dbeaver.com/),它支持像`SELECT * FROM table WHERE col1 = :param1 AND col2 = :param2`这样的参数 (3认同)

The*_*der 12

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

select * from accounts where id = :accountId
Run Code Online (Sandbox Code Playgroud)

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