私は、与えられた入力 (血液型、名前、ID 番号など、ほぼ 26 の入力を取るバイオデータ) に基づいて人を検索する手順を保存しました。
Callable Statement
preparecall
メソッドを使用して Java からストアド プロシージャ (SQL サーバー) を実行しています。以前は、多くの入力パラメーターの 1 つに文字列入力が渡されるたびに、ストアド プロシージャが結果 (0 行の結果) を返さないという問題がありました。一方、整数型のパラメータ値が渡された場合は正しい結果が得られましたが、ドライバーをjdbc
ドライバーからjdbc:odbc
ドライバーに変更するとsqlserver
(driver name=com.microsoft.sqlserver.jdbc.SQLServerDrive
)、問題は解決しました。
ここで、私の新しい問題は、16 個の入力を受け取る私のプロシージャーが実行されているときに、ドライバーの同じ変数(変更されたもの) でprocSearch2
完全に問題なく結果が得られるが、27 個の入力を持つ他のプロシージャー ( ) が結果を返さないことです。または入力値が渡されても。Connection
jdbc
procSearch1
int
string
エラーは発生しません。3行の結果が返されるはずの0行の結果が返されるだけです。
ここにコードがあります
CallableStatement stmt=connect.prepareCall("{CALL procSearch1(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
stmt.setInt(1,0);
stmt.setString(2,"");
stmt.setString(3,"");
.
.
.
stmt.setInt(27,0);
ResultSet result=stmt.executeQuery();
if(result!=null)
{
System.out.println(result.getRow());
while(result.next)
{
System.out.println(result.getString("Name"));
}
}