1

我最近为我的一个项目使用了 oracle 数据库。我创建了一个用于从数据库中选择多行的存储过程。以下是我的程序

create Or replace
PROCEDURE TEST(p_cursor OUT SYS_REFCURSOR) AS

BEGIN
open p_cursor FOR select * from branch_info;
END TEST;

当我执行此过程时,出现以下错误:

      *
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00201: identifier 'SAURAV.TEST' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

我已经搜索过它并在这里找到了类似的问题,但错误线和原因不同。

任何人都请帮我解决这个问题。

编辑:错印测试与文本

4

1 回答 1

1

问题在于关键字测试

CREATE OR REPLACE PROCEDURE test (p_cursor OUT sys_refcursor)
AS
BEGIN
    OPEN p_cursor FOR
        SELECT  *
          FROM  branch_info;
END test;

并执行

variable rc refcursor;

exec test( :rc );

print rc;

ORA-06550: line 1, column 7:
PLS-00201: identifier 'TEST' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

更改为其他名称

CREATE OR REPLACE PROCEDURE test2 (p_cursor OUT sys_refcursor)
AS
BEGIN
    OPEN p_cursor FOR
        SELECT  *
          FROM  branch_info;
END test2 ;

执行为

variable rc refcursor;

exec test2 ( :rc );

print rc;

PL/SQL procedure successfully completed.

从 sql 加

SQL> variable usercur refcursor;
SQL> DECLARE
  2  BEGIN
  3  test2(:usercur);
  4  end;
  5  /

PL/SQL procedure successfully completed.

SQL> print usercur;
于 2013-03-21T10:28:48.210 回答