PL/SQL EXECUTE IMMEDIATE im inneren SCHLEIFE (Verfahren zum abschneiden alle Tabellen im schema)
Ich muss Verfahren erstellen, die löscht alle Daten aus Tabellen in einem schema. Ich versuche, so etwas wie, dass
CREATE OR REPLACE PROCEDURE CLEAR_ALL
IS
sql_truncate VARCHAR2(50);
cursor c1 is
SELECT table_name
FROM all_tables
WHERE owner = 'KARCHUDZ_S';
BEGIN
sql_truncate := 'TRUNCATE TABLE :text_string';
FOR table_name in c1
LOOP
EXECUTE IMMEDIATE sql_truncate USING table_name;
END LOOP;
END CLEAR_ALL;
Aber es gibt mir zwei Fehler, die ich nicht verstehen und beheben.
Fehler(13,7): PL/SQL: Statement ignored
Fehler(13,44): PLS-00457: Statment muss Typ des SQL <-- (Dieser Fehler
ich musste übersetzen, denn ich verwenden University Oracle 11g Basis, die
Polnische lang)
InformationsquelleAutor Karol Chudzik | 2014-12-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht verwenden Sie bind-Variablen (d.h. Ihre
using
- Klausel) als Platzhalter für ein Objekt Namen. Wenn Sie könnten, würden Sie nicht brauchen, verwenden Sie dynamisches SQL in den ersten Platz. Sie haben die Verwendung von-Verkettung oder substitution statt:InformationsquelleAutor Allan
Warum nicht einfach erzeugen der Aussage und nennen Sie es, wie diese?
InformationsquelleAutor Ascalonian