7.5.2 DDL语句的使用
PL/SQL中也允许使用DDL操作语句,但使用方法和DML有所差异。DDL语句要想在PL/SQL块中使用,需要一条命令来执行,该命令是EXECUTE IMMEDIATE,利用它可以执行动态的SQL语句,也就是利用它不仅仅可以执行DDL语句,也可以执行DML语句。该命令替代了DBMS_SQL包,其性能也有所提高,但是依然不建议过程使用该命令。
【示例23】DDL操作示例
要求在PL/SQL块中动态创建表TAB_TEST。表结构见表7.1。
具体脚本如下:
01 DECLARE
02 pc_createStr VARCHAR2(200);
03
04 BEGIN
05
06 pc_createStr:='CREATE TABLE TAB_TEST
07 (
08 OPERID VARCHAR2(10)PRIMARY KEY,
09 OPERNAME VARCHAR2(30),
10 OPERDATE DATE
11 )';
12
13 EXECUTE IMMEDIATE pc_createStr;
14 END;
15 /
【代码解析】
❑第2行声明变量,该变量长度为200,用于存储DDL语句。
❑第6~11行代表的是为变量pc_createStr赋值,值为创建表TAB_TEST的脚本。
❑第13行表示利用EXECUTE IMMEDIATE命令动态创建表TAB_TEST。
【执行效果】
在SQL*Plus中执行脚本,并查看TAB_TEST表的结构。执行过程见图7.28。
图 7.28 PL/SQL执行DDL语句
通常情况下,利用EXECUTE IMMEDIATE命令执行DDL语句会用在存储过程当中。这样可以更好地实现代码可移植性。