ddl in PL/SQL
If you write DDL directly in PL/SQL. You will hit error.
1 DECLARE 2 str_sql varchar2(500); 3 begin 4 create table test (id number); 5 end; 6 / create table test (id number); * ERROR at line 4: ORA-06550: line 4, column 2: PLS-00103: Encountered the symbol "CREATE" when expecting one of the following: begin case declare exit for goto if loop mod null pragma raise return select update while with <an identifier> <a double-quoted delimited-identifier> <a bind variable> << close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe
But you can use dynamic run as below.
1 DECLARE 2 str_sql varchar2(500); 3 begin 4 str_sql := 'create table test (id number)'; 5 execute immediate str_sql; 6 end 7 ; 8 / PL/SQL procedure successfully completed.