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)
);
手作業ですべてのパラメーターを置き換えるのは面倒で、エラーが発生しやすく、おそらく(私はそう思いますが)不要です。
前もって感謝します。
私は2つの方法しか知りません。
最初は 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などを使用して、位置によってパラメーターを参照します。
準備されたステートメントは、現在のデータベースセッションの間だけ持続します。セッションが終了すると、準備済みステートメントは忘れられるため、再度使用する前に再作成する必要があります。
2番目は、「検索して置換」することです$1
、$2
、..などを適切な値で指定します。しかし、これは避けたいものです。
DBeaverでは、コードから行うのと同じようにクエリでパラメーターを使用できるため、これは機能します。
select * from accounts where id = :accountId
クエリを実行すると、DBeaverは:accountIdの値を尋ね、クエリを実行します。