Ich muss eine SQL Server gespeicherte Prozedur von Java aufrufen. Dies ist die gespeicherte Prozedur:Wie gespeicherte Prozedur mit mehreren Werten in Java aufrufen?
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
Was ich tue, ist eine rohe Abfrage zu erstellen und dann mit einem PreparedStatement der Informationen hinzuzufügen.
Ich schaffe die rohe Abfrage wie folgt:
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");
Dies ist die rohe Abfrage ist, die dann
DECLARE @t_certificate v.vt_VidaDollarsCertificates;INSERT @t_certificate VALUES(?,?,?,?),(?,?,?,?) ,(?,?,?,?) ; EXEC v.vprdl_CertificateInsert @t_certificate
gebildet wird, schaffe ich das PreparedStatement.
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()));
}
Danach verwende ich executeUpdate.
preparedStmt.executeUpdate();
ResultSet rs = preparedStmt.getGeneratedKeys();
Aber es funktioniert nicht, es löst eine Ausnahme
der Wert nicht für die Parameternummer
Danke, ich diesen Fehler sehen didn 't. – mavi
Sie sind herzlich willkommen @ Mavi, können Sie es mit der neuen Möglichkeit machen, überprüfen Sie meine Bearbeitung –
Großartig! Ich mag deine Lösung – mavi