Ist es möglich, die Liste der IDs zu definieren, die bei der Cursorauswahl verwendet werden?PL/SQL: Deklarieren Sie die Liste der Nummern, die in der IN-Bedingung verwendet werden sollen
Ich habe versucht, es wie folgt
DECLARE
insert_user_id number := 1;
type nt_type is table of number;
building_num nt_type := nt_type (1,2,3,4,5);
cursor curs1 is
(
select ID
from objects
where BUILDING_NUM in (building_num)
);
Aber was ich bin immer ist der folgende Fehler zu tun:
PLS-00642: local collection types not allowed in SQL statements
Was ich herausgefunden habe, ist, dass, wenn ich erklären werde die Liste der Zahlen auf diese Weise wird es möglich sein, Loop
durch sie. Aber ich will es nicht. Alles, was ich will, ist innerhalb des IN
Zustand des Cursors.
Wie kann ich es tun?
Ich möchte mich fragen, warum ich gerade nicht die IDs innerhalb der IN
im Cursor setzen? Meine Antwort ist: Ich habe mehrere Cursor, die die gleichen Listen-IDs verwenden.
EDIT:
Nach Antworten unten sieht der Code wie folgt:
create type nt_type is table of number;
DECLARE
insert_user_id number := 1;
building_num nt_type := nt_type (1,2,3,4,5);
cursor curs1(building_nums nt_type) is
(
select ID
from objects
where BUILDING_NUM in (select * from table(building_nums))
);
Eine mögliche Lösung ist eine Tabelle (oder vielleicht eine temporäre Tabelle) zu erklären, wo Liste von Nummern erforderlich einfügen und dann die Abfrage schreibt Bezugnahme auf die Tabelle – Carlo