Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Dynamische Abfrage in gespeicherter Prozedur kann nicht ausgeführt werden, während die Anzahl der Datensätze ausgewählt wird

Ihre dynamische Anweisung sollte kein Semikolon am Ende haben; das ist ein Anweisungstrennzeichen und für eine einzelne Anweisung nicht relevant oder gültig. Sie können sowieso nur eine einzelne SQL-Anweisung dynamisch ausführen (es sei denn, Sie fügen mehrere in einen anonymen PL/SQL-Block ein).

Ihr into ist auch am falschen Ort:

TEMP_1 := 'select count ( '|| E ||' ) from ' || C;

DBMS_OUTPUT.PUT_LINE ('STARTED');
DBMS_OUTPUT.PUT_LINE (TEMP_1);

EXECUTE IMMEDIATE TEMP_1 INTO Count_source;

Ich bin mir nicht sicher, warum Sie sich die Mühe machen, lokale Variablen zu haben und zuzuweisen, wenn Sie die Prozedurargumente direkt verwenden können, was meiner Meinung nach die Anweisung lesbarer macht:

TEMP_1 := 'select count ( '|| COLUMN_SOURCE ||' ) from ' || TABLE_SOURCE;