创建的过程有编译错误,没有得到帮助
Procedure created with compilation errors , not getting help in it
CREATE OR REPLACE PROCEDURE fetch( data OUT SYS_REFCURSOR)
AS
BEGIN
OPEN data FOR SELECT * FROM user_errors;
END;
/
Procedure created with compilation errors.
我试过了但不明白为什么我会收到这样的错误,即使在互联网上的许多例子中我也遵循相同但没有得到帮助
Oracle 19c 版本
FETCH
是PL/SQL中的保留字。为您的存储过程使用另一个名称。
你看到错误
select * from user_errors;
在你的情况下你得到:
NAME
TYPE
SEQUENCE
LINE
POSITION
TEXT
ATTRIBUTE
MESSAGE_NUMBER
FETCH
PROCEDURE
1
1
11
PLS-00103: Encountered the symbol "FETCH" when expecting one of the following: current delete exists prior
ERROR
103
当用另一个名字编译包时,你会得到另一个错误:-) 因为CURSOR
不是数据类型。请改用 SYS_REFCURSOR
。
演示:https://dbfiddle.uk/?rdbms=oracle_18&fiddle=33d92c7ed3d254f672affd57bd66dbdd
CREATE OR REPLACE PROCEDURE fetch( data OUT SYS_REFCURSOR)
AS
BEGIN
OPEN data FOR SELECT * FROM user_errors;
END;
/
Procedure created with compilation errors.
我试过了但不明白为什么我会收到这样的错误,即使在互联网上的许多例子中我也遵循相同但没有得到帮助 Oracle 19c 版本
FETCH
是PL/SQL中的保留字。为您的存储过程使用另一个名称。
你看到错误
select * from user_errors;
在你的情况下你得到:
NAME | TYPE | SEQUENCE | LINE | POSITION | TEXT | ATTRIBUTE | MESSAGE_NUMBER |
---|---|---|---|---|---|---|---|
FETCH | PROCEDURE | 1 | 1 | 11 | PLS-00103: Encountered the symbol "FETCH" when expecting one of the following: current delete exists prior | ERROR | 103 |
当用另一个名字编译包时,你会得到另一个错误:-) 因为CURSOR
不是数据类型。请改用 SYS_REFCURSOR
。
演示:https://dbfiddle.uk/?rdbms=oracle_18&fiddle=33d92c7ed3d254f672affd57bd66dbdd