Mit der AKTUELLEN ZEIT, in der ein insert mit einem select in DB2
Ich bin mit JDBC einfügen einer einzelnen Zeile in einer DB2-Datenbank-Tabelle mit der insert-select-Stil einfügen. Ich bin gleichzeitig versuchen, fügen Sie dynamische Daten aus einer Variablen, sowie die ENTRY_DATE
mit CURRENT DATE
:
INSERT INTO mytable (COL_A, COL_B, ENTRY_DATE)
SELECT COL_A, ?, CURRENT DATE FROM mytable
WHERE COL_A > 1;
Ich bin neu in sql und JDBC, also ich weiß nicht, ob mit CURRENT DATE
üblich ist, oder speziell auf unser system, aber es funktioniert in einer normalen einfügen wie:
INSERT INTO mytable ENTRY_DATE values(CURRENT DATE);
Habe ich noch nie verwendet, einfügen-wählen Sie-Stil-Einsätze, also ich weiß nicht, ob der Fehler auf meiner '?', die ich einfügen mithilfe von PreparedStatement.setString, oder die CURRENT DATE
parameter. Jedoch bekomme ich die folgende Fehlermeldung:
[BEA][DB2 JDBC Driver][DB2]STRING, VORBEREITET ZU SEIN, ENTHÄLT UNGÜLTIGE VERWENDUNG
DER PARAMETER MARKER
Benötige ich für surround-entweder oder beide von denen, die etwas zu zeigen, Sie sind nicht Teil der select-Anweisung? Muss ich neu anordnen meine Aussage?
EDIT:
Kann ich nicht zeigen, Sie meinen genauen code, aber hier ist eine enge aproximation:
String sql = null;
PreparedStatement prepStmnt = null;
Connection conn = getConnection("database");
sql = "INSERT INTO MYTABLE ";
sql += "(COLUMN_A, COLUMN_B, ENTRY_DATE)";
sql += "SELECT COLUMN_A, ?, CURRENT DATE";
sql += "FROM MYTABLE WHERE COLUMN_A > 1;";
prepStmnt = conn.prepareStatement(sql);
prepStmnt.setString(1, myVar);
prepStmnt.execute();
?
und nicht mit CURRENT DATE
InformationsquelleAutor CamelCaseBurger | 2014-01-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, das problem ist, dass die DB2-weiß nichts über Ihre parameter, die in der Spaltenliste des select -, kann so nicht wissen, was die wählen Sie zurückkehren werden, und so kann es nicht vorbereiten, die Aussage richtig.
Versuchen Sie dies:
Ersetzen Sie die
CHAR(1)
mit dem, was der korrekte Datentyp fürCOL_B
ist.InformationsquelleAutor Turophile
Die Fehlermeldung bezieht sich auf
?
nicht auf das AKTUELLE DATUM. Vielleicht ist dies, was Sie wollte?In DB2 eine
?
bedeutet, es wird ein parameter übergeben, die für diesen Standort. Aber es wird sagen, Sie können nicht mit einem Parameter Marker. So entfernen Sie die?
ist der parameter marker.Danke! Aber ich brauche zum einfügen von dynamischen Daten. Mein Ziel ist einfach, um in der Lage sein, um eine neue Zeile einzufügen, während Sie kopieren die überwiegende Mehrheit der Daten aus einer Zeile in der gleichen Tabelle. Es ist eine Tabelle mit über 50 Spalten und ich brauche nur zum ändern der update_date Spalte mit dem aktuellen Datum, und eine andere Spalte mit einem Benutzer bereitgestellten Wert. Wenn es einen anderen, einfacheren Weg, dies zu tun, ich bin offen dafür! Danke!
ok, hab ich kein problem mit, aber dann müssen Sie mit dem parameter-marker richtig oder Sie erhalten eine Fehlermeldung. Vielleicht, wenn Sie zeigte uns allen den code?
InformationsquelleAutor Hogan
Sofern nicht anders definiert, ist der Standardwert für ein Datumsfeld wird das AKTUELLE DATUM ein. Daher können Sie in der Lage zu entfernen, dass aus Ihrer Aussage:
InformationsquelleAutor WarrenT