Firebird - Wählen Sie mit und die Werte mit Insert into
Schreibe ich eine gespeicherte Prozedur. Ich weiß, wie man die übergabe von Werten aus select
in insert
.
Aber, ist es möglich, mit INSERT INTO
zu verwenden values
und Select
zur gleichen Zeit?
Insert into table_1 (f1, f2, f3, f4, f5, f6, f7, f8, f9,
FL1, FL2, FL3)
Select :p_f1, :v_f2, :p_f3, :p_f4,
abs(:v_f5 * :p_f5),
abs(:v_f6 * :p_f6),
:v_f7, :v_f8, :v_9 from RDB$DATABASE
UNION
Select f_lookup_id from lookup_table where (f_res >= :v_res) And (f2_lookup_id = :p_id1)
UNION
Select f_lookup_id from lookup_table where (f_res >= :v_res) And (f2_lookup_id = :p_id2)
UNION
Select f_lookup_id from lookup_table where (f_res >= :v_res) And (f2_lookup_id = :p_id3);
Es ist wirklich schwer zu sagen, was du fragst hier. Können Sie ein Beispiel zeigen, was du tust? Und Ihre beste Vermutung an, was Sie zu tun versuchen?
kann ich die WERTE verwenden, und Wählen Sie mit Insert into in einer Anweisung ?
kann ich die WERTE verwenden, und Wählen Sie mit Insert into in einer Anweisung ?
InformationsquelleAutor user639478 | 2012-01-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, Sie wollen, verwenden Sie die Ergebnismenge, die von einer
SELECT
- Anweisung als Eingabe eineINSERT
Aussage? Ja, das ist möglich, siehe FB ' s-Referenzhandbuch. Das Teil, was wahrscheinlich dazu führt, dass dein problem ist, dass Sie nicht dieVALUES
Schlüsselwort in diesem Fall, die Anweisung würde wie folgt AussehenOder wenn Sie wollen, um sowohl für "Konstante Werte" (wie in
INSERT INTO ... VALUES(...)
- Anweisung) und "dynamische Werte" (mitSELECT
Aussage als Quelle) in einer Anweisung, dann können Sie union, iewo
constants
ist eine Liste von Werten des entsprechenden Typs.UPDATE
OK, ich denke was Sie wollen, ist eigentlich so etwas wie
Die Fehlermeldung
count of column list and variable list do not match
ist ziemlich klar, nicht wahr? IhreINSERT
Anweisung listet 12 Spalten und damit auf jedes "Quell-Zeile", muss 12 Spalten, und den Typ der Spalten übereinstimmen muss der Ziel-Spalte geben. Aber einige derSELECT
Aussagen, die Sie der union nur eine Spalte! Sie können NULL oder einige andere (Konstante) default-Wert anstelle der Feldnamen für die Felder Ihrer Tabelle Quelle nicht haben.ja das msg ist klar, aber ich habe versucht, die Nullen in der ersten wählen Sie nur auch RDB$DATABASE ist etwas, das kann nicht geschlossen werden, also danke für das aufklären - so habe ich die Nullen jetzt so: f_lookup_id,0,0 für die erste Aussage und 0, f_lookup_id, 0 und so weiter - aber mit der UNION nicht zu machen Nullen oder null überschreiben Reale Werte ?
auch mit Union zurück multi-Zeilen, aber ich brauche nur eine Zeile, die ich ZUERST versucht, aber noch immer multi-Zeilen
Siehe die aktualisierte Antwort, die select-Anweisungen müssen singelton wählt (nur eine Zeile zurückgeben).
InformationsquelleAutor ain