oracle中存储过程的调用存储过程,oracle 存储过程中调用truncate命令。

数据库版本:

SQL> select * from v$version;

BANNER

----------------------------------------------------------------

Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Prod

PL/SQL Release 10.1.0.2.0 - Production

CORE 10.1.0.2.0 Production

TNS for 32-bit Windows: Version 10.1.0.2.0 - Production

NLSRTL Version 10.1.0.2.0 - Production

基本调用方法:

begin

EXECUTE IMMEDIATE 'truncate table test.t';

end;

测试:

SQL> conn test/test

已连接。

SQL> select * from t;

未选定行

SQL> desc t

名称

--------------------------------------------------

OWNER

OBJECT_NAME

SUBOBJECT_NAME

OBJECT_ID

DATA_OBJECT_ID

OBJECT_TYPE

CREATED

LAST_DDL_TIME

TIMESTAMP

STATUS

TEMPORARY

GENERATED

SECONDARY

SQL> insert into t select * from all_objects;

已创建47382行。

SQL> commit;

提交完成。

SQL> begin

2 EXECUTE IMMEDIATE 'truncate table test.t';

3 end;

4 /

PL/SQL 过程已成功完成。

SQL> select count(*) from t;

COUNT(*)

----------

0

测试之二,truncate操作对表上的对象有没有影响?

创建一个测试过程:

create or replace procedure test

2 as

3 a varchar2(40);

4 begin

5 select object_name into a from t;

6 dbms_output.put_line(a);

7* end;

SQL> /

过程已创建。

SQL> alter procedure test compile;

过程已更改。

SQL> insert into t

2 select * from all_objects

3 where rownum<21;

已创建20行。

SQL> commit;

提交完成。

SQL> select owner,object_name,object_type,status from dba_objects

2 where object_name='TEST';

OWNER

------------------------------

OBJECT_NAME

--------------------------------------------------------------------------

OBJECT_TYPE STATUS

------------------- -------

TEST

TEST

PROCEDURE VALID

SQL> begin

2 EXECUTE IMMEDIATE 'truncate table test.t';

3 end;

4 /

PL/SQL 过程已成功完成。

SQL> select * from t;

未选定行

SQL> select owner,object_name,object_type,status from dba_objects

2 where object_name='TEST';

OWNER

------------------------------

OBJECT_NAME

------------------------------------------------------------------------------

OBJECT_TYPE STATUS

------------------- -------

TEST

TEST

PROCEDURE VALID

执行truncate操作后,过程test的状态依然有效。

测试之三,使用命名过程。

SQL> create or replace procedure truct

2 as

3 begin

4 EXECUTE IMMEDIATE 'truncate table test.t';

5 end;

6 /

过程已创建。

SQL> alter procedure truct compile;

过程已更改。

SQL> insert into t

2 select * from dba_objects

3 where rownum<31;

已创建30行。

SQL> commit;

提交完成。

SQL> select count(*) from t;

COUNT(*)

----------

30

SQL> execute truct;

PL/SQL 过程已成功完成。

SQL> select count(*) from t;

COUNT(*)

----------

0

SQL> select owner,object_name,object_type,status from dba_objects

2 where object_name='TEST';

OWNER

------------------------------

OBJECT_NAME

--------------------------------------------------------------------------

OBJECT_TYPE STATUS

------------------- -------

TEST

TEST

PROCEDURE VALID

SQL>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值