If you write DDL directly in PL/SQL. You will hit error.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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
2
3
4
5
6
7
8
9
10
|
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.
|