关于在存储过程中立即执行
Posted
技术标签:
【中文标题】关于在存储过程中立即执行【英文标题】: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 命令提示符下工作的
【问题讨论】:
你是否使用同一个用户执行存储过程? 【参考方案1】:过程不会继承通过角色授予的权限。更多信息here。请检查您是否遇到了这种情况。
解决此问题的一种方法是将“CREATE TABLE”权限直接授予拥有该过程的帐户。
【讨论】:
【参考方案2】:程序是由同一个用户创建的吗?如果它是由其他人创建的,而您只有 EXECUTE 权限,则错误是正确的(假设创建过程没有AUTHID CURRENT USER
子句)。
你能创建任何其他表吗?如果可以,那就有问题了。我们需要更多细节来分析。
【讨论】:
以上是关于关于在存储过程中立即执行的主要内容,如果未能解决你的问题,请参考以下文章