Ich habe versucht, eine Oracle-Funktion in dem Tabellennamen, Spaltennamen und wo Zeichenfolge sind dynamische Parameter zu erstellen:Oracle-Funktion erstellen
CREATE OR REPLACE FUNCTION MYSCHEMA.myFunctionName(
tableName in nvarchar2,
columnName in nvarchar2,
whereStr in nvarchar2)
RETURN nvarchar2
IS nActive nvarchar2(2000);
BEGIN
declare
querystr nvarchar2(2000) ;
result nvarchar2(2000);
begin
querystr :='
select listagg('+columnName+','+','+') within group (order by '+columnName+')
from '+tableName+' where 1 = 1 '+whereStr+';';
EXECUTE IMMEDIATE querystr
INTO result;
nActive := result;
RETURN (nActive);
end;
END ;
/
Aber es gibt mir eine Fehlermeldung „Warnung: kompiliert aber mit Kompilierungsfehlern“.
Was mache ich falsch?
Verwenden 'show errors' oder fragen Sie die' user_errors' Ansicht, die die eigentlichen Übersetzungsfehler zu sehen. (SQL Developer hat auch einen Bereich, der sie anzeigt). Sie müssen nicht verzerrte Anführungszeichen in Ihrem dynamischen String und dem Concentation-Zeichen ('||' not '+') betrachten; Aber warum hat deine Listagg drei Argumente? –