1
JavaからSQL Serverストアドプロシージャを呼び出す必要があります。これはストアドプロシージャです:複数の値を持つストアドプロシージャをJavaで呼び出す方法
DECLARE @t_certificate v.vt_VidaDollarsCertificates
INSERT INTO @t_certificate VALUES(1,710335,'FFRLODOLAR',363)
INSERT INTO @t_certificate VALUES(1,710335,'FFRLODOLAR05',363)
INSERT INTO @t_certificate VALUES(1,710335,'FFRLODOLAR06',363)
EXEC v.vprdl_CertificateInsert @t_certificate
私が行うのは、生のクエリを作成し、PreparedStatementを使用して情報を追加することです。
私はこのような生のクエリを作成:
StringBuilder query = new StringBuilder();
query.append(
"DECLARE @t_certificate v.vt_VidaDollarsCertificates;"
+ "INSERT @t_certificate VALUES(?,?,?,?)");
for (int i = 0; i < arrCertificates.size() - 1; ++i) {
query.append(",(?,?,?,?) ");
}
query.append("; EXEC v.vprdl_CertificateInsert @t_certificate");
これは、その後、私はPreparedStatementを作成
DECLARE @t_certificate v.vt_VidaDollarsCertificates;INSERT @t_certificate VALUES(?,?,?,?),(?,?,?,?) ,(?,?,?,?) ; EXEC v.vprdl_CertificateInsert @t_certificate
が形成されている生のクエリです。
PreparedStatement preparedStmt = con.prepareStatement(query.toString());
for (int i = 0; i < arrCertificates.size(); ++i) {
preparedStmt.setInt(1, arrCertificates.get(i).getCertificateTypeID());
preparedStmt.setInt(2, arrCertificates.get(i).getContratoID());
preparedStmt.setString(3, arrCertificates.get(i).getFolio());
preparedStmt.setInt(4, Integer.parseInt(arrCertificates.get(i).getID()));
}
その後、私はexecuteUpdateを使用します。
preparedStmt.executeUpdate();
ResultSet rs = preparedStmt.getGeneratedKeys();
しかし、それは動作していない、それは例外
をスロー値がパラメータ番号
おかげで、私はそのエラーを参照してくださいdidn'tの。 – mavi
あなたは大歓迎です@ mavi、あなたは新しい方法でそれを作ることができます、私の編集を確認してください –
素晴らしい!私はあなたのソリューションが好きです – mavi