在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)
);
请注意,手动替换所有参数是单调乏味的,容易出错且可能(我希望)不必要。
提前致谢。
答案 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的值并运行查询。