Warum können wir ddl-Anweisungen nicht direkt in den PL / SQL-Block schreiben, zum Beispiel wenn ich schreibe?
CREATE OR REPLACE PROCEDURE test IS
BEGIN
truncate table table_name; // error
END test;
/
Aber,
CREATE OR REPLACE PROCEDURE test IS
BEGIN
execute immediate 'truncate table table_name'; // works fine
END test;
/
Warum wurde der zweite erfolgreich ausgeführt?