【问题标题】:Regarding Execute Immediate in stored procedure关于在存储过程中立即执行
【发布时间】:2010-03-02 03:57:34
【问题描述】:

我从存储过程中得到以下语句。它给予的权限不足。 但是,如果我从 sql 提示符单独运行 create 语句,它正在创建表。

    execute immediate 'create table TEST_ABC(
                    NO_AC NUMBER(8) 
                    , ILL_PER VARCHAR2(15)
                    , INIT_C DATE
                    )';

需要做什么才能通过立即从存储过程执行来创建表。不知道它是如何在 sql 命令提示符下工作的

【问题讨论】:

  • 你是否使用同一个用户执行存储过程?

标签: sql oracle stored-procedures plsql


【解决方案1】:

过程不会继承通过角色授予的权限。更多信息here。请检查您是否遇到了这种情况。

解决此问题的一种方法是将“CREATE TABLE”权限直接授予拥有该过程的帐户。

【讨论】:

    【解决方案2】:

    程序是由同一个用户创建的吗?如果它是由其他人创建的,而您只有 EXECUTE 权限,则错误是正确的(假设创建过程没有AUTHID CURRENT USER 子句)。

    你能创建任何其他表吗?如果可以,那就有问题了。我们需要更多细节来分析。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多