紧急求助 一个sql看一下

EthanJiang0827 2007-09-25 05:05:42
写了一个如下的存储过程
create or replace procedure add_field(tb_name varchar2,owner varchar2)
as
tempSQL varchar2(1000);
type cursor_t is ref cursor;
emp_cur cursor_t ;

begin
tempSQL := 'select column_name,data_type,data_length,data_precision,data_scale from dba_tab_columns';
tempSQL := tempSQL || ' where owner = ''' || owner || ''' and table_name = ''' || tb_name || '''';

open emp_cur for tempSQL;
……
close emp_cur;
end add_field;

首先tempsql拼接出来的sql语句是可以执行的,已经测试过了
结果在测试这个存储过程的时候总是在open emp_cur for tempSQL这里提示“表或视图不存在”,望高人指点
...全文
108 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
浪尖赏花 2007-09-26
  • 打赏
  • 举报
回复
用户权限问题
用管理员身份登陆即可
EthanJiang0827 2007-09-26
  • 打赏
  • 举报
回复
没有人帮忙,继续顶
EthanJiang0827 2007-09-25
  • 打赏
  • 举报
回复
我再把我现在的情况说清楚一点
我用plsql,使用a这个普通用户登陆的,单独执行select * from dba_tab_columns也是可以的,就是放到存储过程或者函数里面,然后f9跟踪就出现那个错误了。
fanfengchimo 2007-09-25
  • 打赏
  • 举报
回复
是权限的问题! 你看一下,有管理员登陆 执行一下grant select any TABLE to cur_username
在管理员权限下是可以执行的SELECT * FROM DBA_TAB_COLUMNS
kinglht 2007-09-25
  • 打赏
  • 举报
回复
跟踪一下看看!
EthanJiang0827 2007-09-25
  • 打赏
  • 举报
回复
那该怎么办?
mantisXF 2007-09-25
  • 打赏
  • 举报
回复
如果是tempsql拼接出来的sql语句是可以执行的,那么可能就是用户权限的问题了

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧