ITPub博客

首页 > Linux操作系统 > Linux操作系统 > dbms_sql.parse

dbms_sql.parse

原创 Linux操作系统 作者:chaobaojun 时间:2013-04-03 08:40:54 0 删除 编辑

 

create or replace procedure proc_dbms_sql
(
    table_name in varchar2,       --表名
    field_name1 in varchar2,      --字段名
    datatype1 in varchar2,        --字段类型
    field_name2 in varchar2,      --字段名
    datatype2 in varchar2         --字段类型
)as
    v_cursor number;              --定义光标
    v_string varchar2(200);      --定义字符串变量
    v_row number;                  --行数
begin
    v_cursor:=dbms_sql.open_cursor;     --为处理打开光标
    v_string:='create table '||table_name||'('||field_name1||' '||datatype1||','||field_name2||' '||datatype2||')';
    dbms_sql.parse(v_cursor,v_string,dbms_sql.native);    --分析语句
    v_row:=dbms_sql.execute(v_cursor);   --执行语句
    dbms_sql.close_cursor(v_cursor);     --关闭光标
    exception
        when others then
            dbms_sql.close_cursor(v_cursor);  --关闭光标
            raise;
end;

ORA-01031: 权限不足
ORA-06512: 在 "WMS_LS.PROC_DBMS_SQL", line 21
ORA-06512: 在 line 3

执行上面过程时报错!当时test时,执行到dmbs_sql.parse这个地方报错的,首先先想到的 GRANT EXECUTE ON  dbms_sql TO wms_ls; 但是还是不行。

后来在想就是执行ddl语句的权限不足,ddl是create table .但是,这个用户有DBA ROLES ,DBA角色里面有CREATE ANY TABLE权限啊,怎么还报这个错误,那我在专门执行grant create any TABLE to wms_ls;试试。结果OK,可以通过。

反思:难道角色里面的create any table 权限对这个用户不起作用,为什么??

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21861353/viewspace-757672/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: pipeline 实例
请登录后发表评论 登录
全部评论

注册时间:2011-05-14

  • 博文量
    29
  • 访问量
    67528