我写了个存储过程,里面有insert、update、delete语句。做了个任务定时执行这个存储过程。过程如下:
create or replace procedure protest
is
begin
    update tb1 set a1='1';
    insert into tb2(b1) values('1');
    delete from  tb3;
end protest;
没在每个语句后面写commit,执行后会有效吗?

解决方案 »

  1.   

    不写commit 除非提升了用户权限,才可能自动提交事务,而且需要分别配置 Insert update delete 的自动提交
      

  2.   

    哦。我在里面写commit了。原来我没写的时候是全部执行完才可以看到结果。我现在想在一个数据库中通过
    EXECUTE   IMMEDIATE 'truncate table dbuser.tb1;这个语句对另一个数据库表做删除操作。提示我权限不足。该怎么赋权限的
      

  3.   

    grant delete any table to 用户
    授予这个权限应该就可以了,你试试
      

  4.   

    不行的。这个我用过了。因为在美没索引的情况下,用truncate table 效率高点。所以我就用trunate了。truncate table dbuser.tb1 不能直接写在存储过程里要用EXECUTE   IMMEDIATE。但是权限又不够
      

  5.   

    grant truncate any table to 用户
      

  6.   

    最有效的办法,写完后测试一下就知道了呀
    我认为是要 COMMIT的
      

  7.   

    grant drop any table to 用户
      

  8.   

    看你的事务大小
    太频繁的commit会影响性能!!
    可以不写的