Machen Sie eine DB2 insert mit einem select und der Parameter
Möchte ich etwas wie das hier tun:
INSERT INTO TABLEA
(
COLUMN1, COLUMN2, COLUMN 3
)
SELECT FOOBAR, DOOBAR, ?
FROM TABLEB
Dann senden Sie diese an über JDBC Spring JDBC aktualisieren...
simpleJdbcTemplate.update( mySqlFromAbove, someVariableToReplaceQuestionMark );
Ist das überhaupt möglich? Es würde funktionieren, wenn ich ersetzen Sie das Fragezeichen mit der hartcodierten Wert beim Bau meiner SQL-Abfrage, aber ich möchte nicht zu öffnen, mich zu SQL-injection -...
Bearbeiten -
Ich bekomme
verschachtelte Ausnahme ist com.ibm.db2.GBA.c.SqlException: DB2 SQL error: SQLCODE: -418, SQLSTATE: 42610, SQLERRMC: null
Das scheint zu zeigen
Ungültige Verwendung einer parameter-marker ?
InformationsquelleAutor bwawok | 2010-09-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die type-cast die parameter-marker, so dass DB2 weiß, was zu erwarten ist.
Beispiel:
Offensichtlich, cast in den entsprechenden Typ -- int ist nur ein Beispiel.
Gearbeitet, wenn ich einen bestimmten cast.. wie cast(? als char(8)).. nur als char war nicht genug
InformationsquelleAutor Ian Bjorhovde
Hier ist die DB2-SQL-Nachricht Referenz. Hier ist ein Auszug von Relevanz für die SQLCODE-und SQLSTATE Sie abgerufen:
Leider nicht die Antwort auf Ihre problem, da Sie Ihre SQL-scheinen sich gut. Nach Googeln ein bisschen mehr das Aussehen, die den DB2 JDBC-Treiber einfach nicht zu Essen
INSERT INTO ... SELECT ...
Aussagen in einemPreparedStatement
. Es ist unklar, ob fehlt in der SQL-Nachricht Referenz oder ein Fehler im JDBC-Treiber.InformationsquelleAutor BalusC
Sollte es funktionieren. Und +1 für "kein SQL-injection".
Teilen und genießen.
InformationsquelleAutor Bob Jarvis
Waren wir immer die gleichen Fehler, und wir behoben das problem, indem Sie den server die Wiederverwendung. Wenn Sie Zweifel haben, Neustart.
InformationsquelleAutor Sean