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。

7.5.2 DDL语句的使用 - 图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.5.2 DDL语句的使用 - 图2

图 7.28 PL/SQL执行DDL语句

通常情况下,利用EXECUTE IMMEDIATE命令执行DDL语句会用在存储过程当中。这样可以更好地实现代码可移植性。