首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >收藏类型定义

收藏类型定义
EN

Stack Overflow用户
提问于 2017-09-14 15:27:31
回答 1查看 64关注 0票数 0

我试图根据这个站点中提供的指令进行插入。

我可以运行这个例子

代码语言:javascript
复制
    CREATE OR REPLACE PROCEDURE test_proc (p_array_size IN PLS_INTEGER DEFAULT 100)
IS
TYPE ARRAY IS TABLE OF all_objects%ROWTYPE;
l_data ARRAY;

CURSOR c IS SELECT * FROM all_objects;

BEGIN
    OPEN c;
    LOOP
    FETCH c BULK COLLECT INTO l_data LIMIT p_array_size;

    FORALL i IN 1..l_data.COUNT
    INSERT INTO t1 VALUES l_data(i);

    EXIT WHEN c%NOTFOUND;
    END LOOP;
    CLOSE c;
END test_proc;
/

类似地,我将表名更改为实际使用如下。

代码语言:javascript
复制
    CREATE OR REPLACE PROCEDURE test_proc (p_array_size IN PLS_INTEGER DEFAULT 100)
IS
TYPE ARRAY IS TABLE OF web.salesline%ROWTYPE;
l_data ARRAY;

CURSOR c IS SELECT * FROM web.salesline;

BEGIN
    OPEN c;
    LOOP
    FETCH c BULK COLLECT INTO l_data LIMIT p_array_size;

    FORALL i IN 1..l_data.COUNT
    INSERT INTO t2 VALUES l_data(i);

    EXIT WHEN c%NOTFOUND;
    END LOOP;
    CLOSE c;
END test_proc;
/

但我会得到以下错误,即使该表存在并从我运行的架构访问。

代码语言:javascript
复制
SQL> show errors
Errors for PROCEDURE :

LINE/COL ERROR
-------- -----------------------------------------------------------------
6/4      PL/SQL: Item ignored
6/34     PLS-00201: identifier 'WEB.SALESLINE' must be declared
11/7     PL/SQL: SQL Statement ignored
16/9     PL/SQL: ORA-00942: table or view does not exist
20/5     PL/SQL: SQL Statement ignored
20/40    PLS-00597: expression 'OBJECTTABLE$' in the INTO list is of wrong
         type

23/5     PL/SQL: SQL Statement ignored
23/27    PL/SQL: ORA-00904: : invalid identifier
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-14 16:30:53

除非在web模式中创建了该过程,否则您将引用另一个模式的表,因此模式需要给您使用它的直接权限。请注意,存储过程中没有角色。

作为WEB用户:

代码语言:javascript
复制
grant select on salesline to devuser;

(或过程所在的任何架构)。

通常,我们试图避免硬编码模式名称,而是使用同义词来管理这些引用,例如DEVUSER

代码语言:javascript
复制
create or replace synonym salesline for web.salesline;

如果您定义了过程authid current_user (默认是authid definer),角色就会重新发挥作用,但是对于执行DML的过程来说,这通常不是一个好主意。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46223051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档