当前位置 > 主页 > 万和大讲堂 >


Oracle存储过程中无法使用truncate语句

2015-11-04 11:32

  问题描描述:


  存储过程中主要包括两个逻辑块,一是将其他用户表中的数据truncate,一个是将新数据 插入到其他用户表中。南京Oracle认证培训


  此存储过程创建、编译、单步调试都没有任何问题。但是执行完成后,发现原表中的数据没有变化。这说明此存储过程的执行中存储问题。


  查询错误信息记录日志表,发现确实是有错误记录。可以肯定存储过程没有被正确执行。


  这时,我们可以将调用dbms_output.put_line();这个 包来获取具体的错误信息。 将此包加入到存储过程中后,执行存储过程,提示没有权限,而看报错的顺序,是truncate语句没有执行权限。


  但是把truncate说句单独执行,是没有问题的。


  现在我们可以将此问题定义为授予用户的role在存储过程中无效。南京Oracle认证培训


  解决方法:


  1. 将truncate语句封装到表所有者用户下。然后让存储过程的创建用户去调用这个包。


  2. 在存储过程中加入AUTHIID {[CURRENT_USER|DEFINED]}


  然而,第二种方法不是很推荐,因为truncate其他用户的表,是需要drop any table 这个权限的。这种授权操作存在很大风险。南京Oracle认证培训


最近开班 more>
  • 全栈开发
  • 软件测试
  • Java大数据开发工程师
  • Web前端开发
  • 开发课程基础班第三期
  • 开发课程基础班第二期
  • 开发课程基础班第一期
  • Java Web UI Python
  • CISP
  • HCIE-Cloud lab
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • OCP 19C
  • RHCA-OpenStack
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • vip班
  • 双休班
  • 双休班
  • 脱产班
  • 脱产班
  • 脱产班
  • 双休班
  • 双休班
  • 双休班
  • 业余班
  • 业余班
  • 6月28日
  • 6月5日
  • 6月26日
  • 6月27日
  • 6月19日
  • 6月12日
  • 6月5日
  • 随时开课
  • 6月10日
  • 6月4日
  • 6月4日
  • 6月12日
  • 6月26日
  • 6月10日
  • 6月10日
  • 6月4日
  • 7月8日
  • 6月28日
    • 姓 名 :
    • 电 话 :
    • 课 程 :

技术交流群

  • Java大数据交流群560819979加入
  • Python技术交流群595083299加入
  • Oracle技术交流群595119011加入
  • Web前端技术交流群604697610加入
  • Huawei技术交流群482919361加入
  • Redhat技术交流群587875348加入
  • UI设计技术交流群511649801加入
  • Cisco技术交流群596886705加入
  • IT运维技术交流群605888381加入