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

上传人:牧羊曲112 文档编号:3162488 上传时间:2023-03-11 格式:DOCX 页数:2 大小:36.82KB
返回 下载 相关 举报
Oracle 存储过程中无法使用truncate语句.docx_第1页
第1页 / 共2页
Oracle 存储过程中无法使用truncate语句.docx_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《Oracle 存储过程中无法使用truncate语句.docx》由会员分享,可在线阅读,更多相关《Oracle 存储过程中无法使用truncate语句.docx(2页珍藏版)》请在三一办公上搜索。

Oracle 存储过程中无法使用truncate语句Oracle 存储过程中无法使用truncate语句个人分类:足行千里-克 -千里之行,始于足下!荐于测试时用的不是个人数据库。不能把测试过程发上来。 这里只能把思路写一写。问题描述:存储过程中主要包括两个逻辑块,一是将其他用户表中的数据truncate,一个是将新数据 插入到其他用户表中。 此存储过程创建、编译、单步调试都没有任何问题。但是执行完成后,发现原表中的数据没有变化。这说明此存储过程的执行中存在问题。查询错误信息记录日志表,发现确实是有错误记录。可以肯定存储过程没有被正确执行。 这时,我们可以将调用dbms_output.put_line;这个 包来获取具体的错误信息。 将此包加入到存储过程中后,执行存储过程,提示没有权限,而看报错的顺序,是truncate语句没有执行权限。 但是把truncate语句单独执行,是没有问题的。 现在我们可以将此问题定义为授予用户的role在存储过程中无效。 解决方法:1. 将truncate语句封装到表所有者用户下的存储过程A。然后让存储过程B的创建用户去调用A存储过程。 2. 在存储过程中加入AUTHID CURRENT_USER|DEFINED 然而,第二种方法不是很推荐,因为truncate其他用户的表,是需要drop any table 这个权限的。这种授权操作存在很大风险。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号