Wie geben Sie eine array-parameter mit Werten zu Stored Procedure?
Ich würde gerne geben Sie eine array-parameter von IDs Stored Procedure.
:INPUT_LIST_ID = [1, 2, 12, 45, 75, 45]
Ich bin benötigen Sie zur Ausführung dieser SQL-Befehl:
SELECT *
FROM CITY
WHERE ID_CITY IN (:INPUT_LIST_ID)
Ist es möglich?
Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man auch so etwas wie dieses:
Würden Sie haben, um eine neue Firebird-Verfahren namens "GetIntegerList" die würde in etwa so Aussehen:
Hinweis, dies war in Firebird 2.5.2.
AFAIK Nein, das ist nicht möglich. Während Firebird hat-array-Daten-Typ, die Unterstützung für Sie ist rudimentär und Verwendung von arrays ist im Allgemeinen nicht empfohlen. Ich denke, die einfachste Lösung wäre, das array übergeben als (durch Komma getrennt) Zeichenfolge und verwenden Sie dann die
für die execute-Anweisung
- Anweisung, um die Ergebnismenge, so etwas wieDies bedeutet jedoch, dass die Anweisung, die Sie verwenden, um das Ergebnis ändert sich auch, statt
WHERE
verwenden Sie die parameter der gespeicherten ProzedurCITY
:Andere option zum senden der Parameterliste zu verwenden Globale temporäre Tabelle. Dies hat den pro, den Sie senden können riesige Anzahl von IDs ohne überschreitung der maximal zulässigen Aussagen, die Größe, aber es ist mehr Arbeit zum einrichten der Anruf...
Versuchen Sie dies:
Wenn Sie Firebird 1.5 (sollte Es auf höheren Versionen) verwenden, können Sie diese einfache Funktion, die ich gemacht konvertieren Sie eine einzelne Zeichenfolge in eine Ganzzahl-array:
Nutzung
select int_value from integer_list('1,2,3,4, 5, 200, 1, 598415, 2')
Werde wieder dieses: