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
pragmaraise return
select update while with
<an identifier><a double-quoted delimited-identifier> <a bind variable> <<close current delete fetch lock insert
open rollbacksavepoint 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. |
原文:http://www.cnblogs.com/kramer/p/3656179.html