Pourquoi ne pouvons-nous pas écrire des instructions ddl directement dans un bloc PL / SQL, par exemple lorsque j'écris
CREATE OR REPLACE PROCEDURE test IS
BEGIN
truncate table table_name; // error
END test;
/
Mais,
CREATE OR REPLACE PROCEDURE test IS
BEGIN
execute immediate 'truncate table table_name'; // works fine
END test;
/
Pourquoi le second s'est-il exécuté avec succès?