Spring Boot DB連携

SQL ServerのIN句で2100件程度の項目を指定してみた

SQL Serverの場合、SQLのIN句で1,001件の項目を指定してもエラーにならないが、2,100件程度の項目を指定すると、「着信要求のパラメーターが多すぎます。サーバーがサポートするパラメーターは最大2100個です。」というエラーが発生してしまう。

今回は、SQL Serverで、SQLのIN句で2,100件程度の項目を指定した場合の動作を確認してみたので、共有する。

前提条件

下記記事の実装が完了していること。

各DBのIN句で1000件を超える項目を指定してみたOracleデータベースの場合、IN句で1000件を超える項目を指定するとエラーになってしまうが、他のDBではIN句に1001件の項目を...

サンプルプログラムの作成

作成したサンプルプログラムの構成は、以下の通り。
サンプルプログラムの構成
なお、上記の赤枠は、前提条件のプログラムから変更したプログラムである。

Spring Bootのメインクラスの内容は以下の通りで、SQL Serverに接続し、WHERE句内のIN句で2098件・2099件のデータを指定したSQLを実行している。

フリエン(furien)は多くの案件を保有しフリーランス向けサービスも充実しているエージェントだったフリエン(furien)は、ITフリーランス(個人事業主)エンジニア専門のエージェントであるアン・コンサルティング株式会社が運営する業界...

また、今回は修正していないが、Spring Bootのメインクラス内で実行するSQLのMapperインタフェース・Mapper XMLの内容は以下の通り。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/java/tree/master/spring-boot-sqlserver-in-around2100/demo

「CODE×CODE」は、需要の高い技術(AWS, Python等)を習得できるプログラミングスクールスクールだった近年、さまざまな会社でクラウド(特にIaaSやPaaSのパブリッククラウド)の需要が非常に高まっていて、クラウドサービスによるシステム開...

サンプルプログラムの実行結果

サンプルプログラムの実行結果は以下の通りで、SQLのIN句で2,100件程度の項目を指定するとエラーになることが確認できる。

1) 以下を実行し、USER_DATAテーブルに2,100件のデータを追加する。

サンプルプログラムの実行結果_1

2) 1)の状態でSpring Bootのメインクラス(DemoApplication.java)を実行した結果、コンソールログに出力される内容は以下の通り。
サンプルプログラムの実行結果_2

要点まとめ

  • SQL Serverの場合、SQLのIN句で2,100件程度の項目を指定するとエラーが発生するため、注意が必要である。