〖原理(Cause) 〗
使用动态SQL可以执行DDL语句。
〖方法(Action) 〗
方法一:
Step01:创建存储过程create_table。
CREATE OR REPLACE PROCEDURE create_table
IS
v_Cursor NUMBER;--定义游标
v_CreateString VARCHAR2(100);--这个变量存放创建表的SQL语句。
BEGIN
v_Cursor := DBMS_SQL.OPEN_CURSOR;--打开游标
v_CreateString := 'CREATE TABLE tp (id int,name varchar2(20))';--创建表的SQL语句。
DBMS_SQL.PARSE(v_Cursor, v_CreateString, DBMS_SQL.V7);执行建表的SQL语句
DBMS_SQL.CLOSE_CURSOR(v_Cursor);--关闭游标
END create_table;
Step02:执行存储过程
SQL> execute create_table;
PL/SQL procedure successfully completed.
这个过程将创建表tp。
方法二:
Step01:创建过程存储过程create_table
SQL> create or replace procedure create_table
2 as
3 Pstring varchar2(2000);
4 begin
5 Pstring:=' CREATE TABLE tp (id int,name varchar2(20))' ;--创建表的sql语句
6 execute immediate p_string;--创建表
7 end;
8 /
Procedure created.
Step02:执行过程
SQL> execute create_table;
PL/SQL procedure successfully completed.
这个过程将创建表tp。