DDLがない場合は、ステートメントをBEGINおよびENDで囲むことにより、匿名のPL/SQLブロックを作成できます。
BEGIN
INSERT INTO foo (bar) VALUES('one');
INSERT INTO foo (bar) VALUES('two');
END;
DDL(CREATE TABLEなど)を実行するには、動的PL/SQLを使用する必要があります。
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;
ブロックを実行する前にテーブルが存在せず、コンパイルに失敗するため、INSERTSも動的です。
注:これは異常な要件です。アプリケーションは通常、テーブルを作成するべきではありません!