暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

过程中动态SQL执行DDL

原创 章芋文 2012-04-08
585
SQL> select object_name,status from user_objects where object_type='PROCEDURE';
SQL> col object_name for a30;
SQL> /

OBJECT_NAME STATUS
------------------------------ -------
AWEN_TEST VALID
AWEN_TEST_CREATE VALID
AWEN_TEST_DROP VALID

SQL> select text from all_source where owner='AWEN' and name=upper('awen_test');


TEXT
--------------------------------------------------------------------------------

procedure awen_test
as
v_sql varchar2(600);
vrow int;
i int;
l_rowcount number;
begin
v_sql:='truncate table a1';
vrow:=dbms_sql.open_cursor;
dbms_sql.parse(vrow,v_sql,dbms_sql.V7);
i:=dbms_sql.execute(vrow);
end awen_test;

SQL> select count(*) from a1;

COUNT(*)
----------
1

SQL> exec awen_test;

PL/SQL 过程已成功完成。

SQL> select count(*) from a1;

COUNT(*)
----------
0

SQL> select text from all_source where owner='AWEN' and name=upper('awen_test_dr
op');

TEXT
--------------------------------------------------------------------------------

procedure awen_test_drop
as
v_sql varchar2(600);
vrow int;
i int;
l_rowcount number;
begin
v_sql:='drop table a2';
vrow:=dbms_sql.open_cursor;
dbms_sql.parse(vrow,v_sql,dbms_sql.V7);
i:=dbms_sql.execute(vrow);
end awen_test_drop;


SQL> select count(*) from a1;

COUNT(*)
----------
0

SQL> desc a2;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------

ID NUMBER(8)

SQL> exec awen_test_drop;

PL/SQL 过程已成功完成。

SQL> desc a2;
ERROR:
ORA-04043: 对象 a2 不存在


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论