Sans le DDL, vous pourriez créer un bloc PL/SQL anonyme en entourant les instructions avec BEGIN et END :
BEGIN
INSERT INTO foo (bar) VALUES('one');
INSERT INTO foo (bar) VALUES('two');
END;
Pour effectuer DDL (comme CREATE TABLE), vous devez utiliser du PL/SQL dynamique :
BEGIN
EXECUTE IMMEDIATE 'CREATE TABLE foo (bar VARCHAR2(100))';
EXECUTE IMMEDIATE 'INSERT INTO foo (bar) VALUES(:v)' USING 'one';
EXECUTE IMMEDIATE 'INSERT INTO foo (bar) VALUES(:v)' USING 'two';
END;
Les INSERTS sont également dynamiques, car la table n'existe pas avant l'exécution du bloc et sa compilation échouerait donc.
REMARQUE :Il s'agit d'une exigence inhabituelle :les applications ne doivent normalement pas créer de tableaux !