同じ番号の再利用と個数の不一致

WHERE 句で $1 を 2 回使い、渡す値は 3 個にしてしまった例です。同じ番号の再利用が誤りではないことと、個数が合わない警告の両方を確かめます。

入力

SQL

UPDATE t SET a = $1 WHERE b = $2 OR c = $1

数える書き方

$1, $2…(PostgreSQL の位置パラメータ)だけ

実際に渡す値の個数(任意)

3

結果

エラー 0 件・警告 1 件・情報 1 件

指摘(エラー・警告・情報)

  • 情報 全体 $1 は複数回出てきます。同じ番号は同じ値を指すので、渡す値は 1 つで足ります。
  • 警告 渡す値の個数 渡す値は 3 個ですが、最大番号は $2 です。個数が合わないときの厳密な動作は PREPARE のページに記載がないため、実際に使う DB・ドライバーで確認してください。
最大番号$2
使われている番号の数2 個
欠番なし

プレースホルダの一覧

プレースホルダの一覧
プレースホルダ出現回数行
$121 行目
$211 行目

検算(この結果になる理由)

$1 が 2 回、$2 が 1 回で、最大番号は $2 です。同じ番号の複数回の使用は情報 1 件で、渡す値 3 個と最大番号 2 の不一致が警告 1 件になります。番号の欠番はありません。

判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。

このツールの制約

ご利用にあたって

  • 結果は字句の読み取りにもとづく確認で、実際のクエリが正しく実行できることを保証するものではありません。
  • ドキュメントは PostgreSQL License で公開されています。このサイトはその内容を要約して参照しており、転載はしていません。

ほかの入力例