以下のような複数ステートメントのコマンドのパラメーターバインディングを行いたいのですが、エラーになります。
BEGIN;
INSERT INTO Test(ID) VALUES ($1);
COMMIT;
色々調べてみると、「$1」というパラメーターを記述しているはずなのにコマンドのパラメーター数が0のようでした。
次に、以下のような単数ステートメントのコマンドで調べてみたところ、こちらはパラメーター数が1でパラメーターバインディングも行えました。
SELECT * FROM Test WHERE ID = $1;
さらに、以下のような複数ステートメントのコマンドで調べてみたところ、パラメーター数が2で、1つ目のステートメントに含まれる「$1」と「$2」のパラメーターバインディングは問題なく、2つ目のステートメントに含まれる「$3」のパラメーターバインディングでエラーになりました。
SELECT * FROM Test WHERE ID = $1 AND ID = $2;
SELECT * FROM Test WHERE ID = $3;
これらの結果を踏まえ、複数ステートメントのコマンドのパラメーターバインディングは最初のステートメントの分しか行えない可能性があると考えたのですが、これは意図された仕様でしょうか?
以下のような複数ステートメントのコマンドのパラメーターバインディングを行いたいのですが、エラーになります。
BEGIN;
INSERT INTO Test(ID) VALUES ($1);
COMMIT;
色々調べてみると、「$1」というパラメーターを記述しているはずなのにコマンドのパラメーター数が0のようでした。
次に、以下のような単数ステートメントのコマンドで調べてみたところ、こちらはパラメーター数が1でパラメーターバインディングも行えました。
SELECT * FROM Test WHERE ID = $1;
さらに、以下のような複数ステートメントのコマンドで調べてみたところ、パラメーター数が2で、1つ目のステートメントに含まれる「$1」と「$2」のパラメーターバインディングは問題なく、2つ目のステートメントに含まれる「$3」のパラメーターバインディングでエラーになりました。
SELECT * FROM Test WHERE ID = $1 AND ID = $2;
SELECT * FROM Test WHERE ID = $3;
これらの結果を踏まえ、複数ステートメントのコマンドのパラメーターバインディングは最初のステートメントの分しか行えない可能性があると考えたのですが、これは意図された仕様でしょうか?