Ich muss eine Funktionssignatur ändern, um einen Parameter (p_param) vom Typ CLOB zu haben, der vorherige Typ war nvarchar2. Das verursachte mir Probleme, wenn der vorhandene Code || verwendete concat.Concat CLOB in PL/SQL für sofortige Ausführung
Hier ist das vorhandene Snippet, das für den NVarchar2 gut funktioniert, aber anscheinend, wenn Sie || verwenden um ein CLOB zu contrahieren behandelt es es wie ein nvarchar2, was ein Problem ist, wenn das Zeichenlimit von nvarchar2 überschritten wird.
execute immediate
'select p.person_id
from person p where p.id in (' || p_param || ')'
bulk collect into persons;
Ich habe versucht, das obige Snippet zu ändern
execute immediate
concat(concat('select p.id from person p where p.person_id in(',p_param),')')
bulk collect into members;
seinen Dieser kompiliert nicht, ich erhalte eine Fehlermeldung,
PLS-00382: Ausdruck ist von falschem Typ
Ich bin neu in PL/SQL, danke für die Hilfe.
Erstellen Sie so lange eine Liste von Personen, dass sie nicht in eine VARCHAR2- oder NVARCHAR2-Variable passt? Ich denke nicht, dass Oracle SQL so lange gerne hat. Ich würde den Ansatz völlig in Frage stellen. –
Ja, ich stimme dir vollkommen zu. Ich behalte etwas Code und möchte vermeiden, das Ganze neu zu schreiben. – Andy