ITPUB??ì3
12月微软Hyper-V虚拟化沙龙主题征集
ITPUB论坛 » Oracle开发 » Oracle动态sql执行问题

标题: Oracle动态sql执行问题
离线 Arrayli2
高级会员


精华贴数 0
个人空间 43
技术积分 4122 (354)
社区积分 1492 (751)
注册日期 2002-2-12
论坛徽章:5
ITPUB元老会员2006贡献徽章蓝色妖姬授权会员  
      

发表于 2002-4-1 07:41 
Oracle动态sql执行问题

ORACLE动态SQL执行问题 (

有过程如下:
procedure exec_sql(p_sql in varchar2) as
v_Cursor BINARY_INTEGER;
v_ReturnCode BINARY_INTEGER;
begin
  v_Cursor := DBMS_SQL.OPEN_CURSOR;
  -- Parse and execute the statement.
  DBMS_SQL.PARSE(v_Cursor, p_sql, DBMS_SQL.NATIVE);
  v_ReturnCode := DBMS_SQL.EXECUTE(v_Cursor);
  -- Close the cursor.
  DBMS_SQL.CLOSE_CURSOR(v_Cursor);
end;
调用时用
SQL> begin
  2  exec_sql('create table abcd as select sysdate tmp from dual');
  3  end;
  4  /
begin
*
ERROR at line 1:
ORA-01031: insufficient privileges
ORA-06512: at "SYS.DBMS_SYS_SQL", line 491
ORA-06512: at "SYS.DBMS_SQL", line 32
ORA-06512: at "LI2.EXEC_SQL", line 7
ORA-06512: at line 2

但如改为执行 DROP TABLE 就正常,请问是什么原因.
过程创建,执行的用户有DBA权限,



DBA的权限做这事肯定正常,是不是动态SQL中就不能创建对象,我用的数据库是 805





__________________
君子终日乾乾,夕惕若,厉无咎当我沉默着的时候,我觉得充实;我将开口,同时感到空虚
只看该作者    顶部
离线 lunar2000
月儿


精华贴数 2
个人空间 18
技术积分 26688 (32)
社区积分 424 (1601)
注册日期 2001-10-8
论坛徽章:3
ITPUB元老会员2006贡献徽章授权会员   
      

发表于 2002-4-1 08:25 
从定义权的角度来讲,DBMS_SQL 的 OWNER 是 SYS ,所以,使用它的命令都应时SYS运行的。在8i中,可以用调用权来解决这个问题。即在过程头中包含:AUTHID CURRENT_USER


例如:
create or replace procedure TEST
AUTHID CURRENT_USER
as
...
BEGIN
        ...
END


__________________
MSN: lunar52@hotmail.com

http://blog.csdn.net/lunar2000

http://space.itpub.net/747/action-viewpro-showpro-1
只看该作者    顶部
离线 li2
高级会员


精华贴数 0
个人空间 43
技术积分 4122 (354)
社区积分 1492 (751)
注册日期 2002-2-12
论坛徽章:5
ITPUB元老会员2006贡献徽章蓝色妖姬授权会员  
      

发表于 2002-4-1 17:25 
大哥,我用的是805,这样写语法错误


__________________
君子终日乾乾,夕惕若,厉无咎当我沉默着的时候,我觉得充实;我将开口,同时感到空虚
只看该作者    顶部
离线 jlandzpa
版主


精华贴数 29
个人空间 0
技术积分 45963 (15)
社区积分 53595 (10)
注册日期 2001-10-12
论坛徽章:16
现任管理团队成员ITPUB元老授权会员生肖徽章2007版:牛ITPUB新首页上线纪念徽章 
      

发表于 2002-4-1 20:43 
需要显示授权:
grant create table to username;


__________________
my blog: http://blog.itpub.net/jlandzpa
mail: “id”@itpub.net

注意: [投资理财版] 业已提供上证指数菠菜,欢迎参与 :)

[头像] 黑木明纱 Meisa Kuroki  :)
只看该作者    顶部
离线 li2
高级会员


精华贴数 0
个人空间 43
技术积分 4122 (354)
社区积分 1492 (751)
注册日期 2002-2-12
论坛徽章:5
ITPUB元老会员2006贡献徽章蓝色妖姬授权会员  
      

发表于 2002-4-1 22:14 
老大我用的可是DBA的用户权限,如真是那样什么解释可以动态DROP TABLE


__________________
君子终日乾乾,夕惕若,厉无咎当我沉默着的时候,我觉得充实;我将开口,同时感到空虚
只看该作者    顶部
离线 jlandzpa
版主


精华贴数 29
个人空间 0
技术积分 45963 (15)
社区积分 53595 (10)
注册日期 2001-10-12
论坛徽章:16
现任管理团队成员ITPUB元老授权会员生肖徽章2007版:牛ITPUB新首页上线纪念徽章 
      

发表于 2002-4-1 22:42 
过程中create table是需要显示授权的,不管你是不是dba.

QUOTE:
最初由 li2 发布
老大我用的可是DBA的用户权限,如真是那样什么解释可以动态DROP TABLE




__________________
my blog: http://blog.itpub.net/jlandzpa
mail: “id”@itpub.net

注意: [投资理财版] 业已提供上证指数菠菜,欢迎参与 :)

[头像] 黑木明纱 Meisa Kuroki  :)
只看该作者    顶部
离线 li2
高级会员


精华贴数 0
个人空间 43
技术积分 4122 (354)
社区积分 1492 (751)
注册日期 2002-2-12
论坛徽章:5
ITPUB元老会员2006贡献徽章蓝色妖姬授权会员  
      

发表于 2002-4-1 23:46 
问题解决了,谢谢版主


__________________
君子终日乾乾,夕惕若,厉无咎当我沉默着的时候,我觉得充实;我将开口,同时感到空虚
只看该作者    顶部
离线 jlandzpa
版主


精华贴数 29
个人空间 0
技术积分 45963 (15)
社区积分 53595 (10)
注册日期 2001-10-12
论坛徽章:16
现任管理团队成员ITPUB元老授权会员生肖徽章2007版:牛ITPUB新首页上线纪念徽章 
      

发表于 2002-4-1 23:53 
如何解决的?

QUOTE:
最初由 li2 发布
问题解决了,谢谢版主




__________________
my blog: http://blog.itpub.net/jlandzpa
mail: “id”@itpub.net

注意: [投资理财版] 业已提供上证指数菠菜,欢迎参与 :)

[头像] 黑木明纱 Meisa Kuroki  :)
只看该作者    顶部
在线/呼叫 biti_rainy
人生就是如此



精华贴数 38
个人空间 0
技术积分 111199 (4)
社区积分 11832 (132)
注册日期 2001-12-12
论坛徽章:41
现任管理团队成员ITPUB长老会成员ITPUB元老年度论坛发贴之星年度论坛发贴之星ITPUB北京九华山庄2008年会纪念徽章
管理团队2007贡献徽章参与2007年甲骨文全球大会(中国上海)纪念ITPUB北京香山2007年会纪念徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章

发表于 2002-4-2 02:51 
当认识到DBA也无权擅自窥探别人的隐私的时候

问题就解决了

角色授权不允许在过程中使用是因为oracle的编译采取的策略的关系


__________________
眼界决定边界,态度决定高度
blog:
人生就是如此
只看该作者    顶部
离线 flytiger
爱狗的色友


精华贴数 1
个人空间 0
技术积分 11408 (104)
社区积分 7650 (201)
注册日期 2001-9-24
论坛徽章:28
现任管理团队成员2008北京奥运纪念徽章:帆船2008年新春纪念徽章   
      

发表于 2002-4-2 04:38 
所有的DDL操作在procedure中都必须显式地赋予权限
好象是这样


__________________
在这个自私的世界上,一个人唯一毫不自私的朋友、唯一不抛弃他的朋友、唯一不忘恩负义的朋友,就是他的狗。

爱乒乓
只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问