【问题标题】:How to add parameter values to pgadmin sql query?如何将参数值添加到 pgadmin sql 查询?
【发布时间】:2016-01-04 21:40:15
【问题描述】:

在 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)
       );

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

提前致谢。

【问题讨论】:

    标签: sql postgresql parameters pgadmin


    【解决方案1】:

    我只知道两种方法。

    首先是使用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 命令时,计划并执行准备好的语句。

    准备好的语句可以带参数:在语句执行时替换到语句中的值。创建prepared statement时,按位置引用参数,使用$1、$2等。

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

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

    【讨论】:

    • sql developer 只是发送一个对话框提示,让你添加它们,甚至保存你最后的值,非常方便
    • @chrismarx 不错的功能。遗憾的是,pgadmin 4 没有引入这个功能。
    • 我切换到 DBeaver (dbeaver.com),它支持像 SELECT * FROM table WHERE col1 = :param1 AND col2 = :param2 这样的参数
    【解决方案2】:

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

    select * from accounts where id = :accountId
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-24
      • 1970-01-01
      • 1970-01-01
      • 2019-05-30
      相关资源
      最近更新 更多