试图在Oracle PL SQL中创建SELECT存储过程,在变量CURSOR\u OUTPUT REFCURSOR中出错;

试图在Oracle PL SQL中创建SELECT存储过程,在变量CURSOR\u OUTPUT REFCURSOR中出错;,oracle,plsql,oracle11g,Oracle,Plsql,Oracle11g,我已经为简单的select语句输出创建了一个过程 创建或替换程序marcydashboard(p_记录集输入输出系统\u参考光标) 是 开始 打开p_记录集,从员工中选择员工id、姓名、姓氏; 结束; 变量游标\输出参考游标; 执行marcydashboard(:光标_输出); 我需要与select语句结果相同的结果,但得到的错误如下: ERROR at line 6: PLS-00103: Encountered the symbol "VARIABLE" 4. END

我已经为简单的select语句输出创建了一个过程

创建或替换程序marcydashboard(p_记录集输入输出系统\u参考光标)
是
开始
打开p_记录集,从员工中选择员工id、姓名、姓氏;
结束;
变量游标\输出参考游标;
执行marcydashboard(:光标_输出);
我需要与select语句结果相同的结果,但得到的错误如下:

ERROR at line 6: PLS-00103: Encountered the symbol "VARIABLE" 
4. END;
5. VARIABLE CURSOR_OUTPUT REFCURSOR;
6. EXECUTE marcydashboard(:CURSOR_OUTPUT );

请帮助我修复错误

好吧,它在SQL*Plus中工作:

SQL> CREATE OR REPLACE PROCEDURE marcydashboard (p_recordset OUT SYS_REFCURSOR)
  2  IS
  3  BEGIN
  4     OPEN p_recordset FOR
  5        SELECT employee_id, first_name, last_name FROM employees;
  6  END;
  7  /

Procedure created.

SQL>
SQL> VARIABLE cursor_output REFCURSOR;
SQL> EXECUTE marcydashboard(:cursor_output);

PL/SQL procedure successfully completed.

SQL> PRINT :cursor_output

EMPLOYEE_ID FIRST_NAME LAST_NAME
----------- ---------- ---------
       7369 SMITH      CLERK
       7499 ALLEN      SALESMAN
       7521 WARD       SALESMAN
       7566 JONES      MANAGER

SQL>
看起来你不是在使用那个工具,而是在使用其他工具。在这种情况下,它将不起作用,你将不得不以不同的方式来做

SQL> SET SERVEROUTPUT ON
SQL>
SQL> DECLARE
  2     l_rc           SYS_REFCURSOR;
  3     --
  4     l_employee_id  employees.employee_id%TYPE;
  5     l_first_name   employees.first_name%TYPE;
  6     l_last_name    employees.last_name%TYPE;
  7  BEGIN
  8     marcydashboard (l_rc);
  9
 10     LOOP
 11        FETCH l_rc INTO l_employee_id, l_first_name, l_last_name;
 12
 13        EXIT WHEN l_rc%NOTFOUND;
 14
 15        DBMS_OUTPUT.put_line (
 16           l_employee_id || ' - ' || l_first_name || ' - ' || l_last_name);
 17     END LOOP;
 18
 19     CLOSE l_rc;
 20  END;
 21  /
7369 - SMITH - CLERK
7499 - ALLEN - SALESMAN
7521 - WARD - SALESMAN
7566 - JONES - MANAGER

PL/SQL procedure successfully completed.

SQL>

您需要在
结束后的新行上添加
/

END;
/
变量游标\输出参考游标;

我试图(帮助你),但你似乎没有读我写的东西。您使用的工具(它是哪一个?)不支持您尝试使用的代码,变量未知。这就是为什么我发布了另一个选项来获得你想要的。tq我已经正确地检查了它working@sivaprakash您可以单独运行
CREATE PROCEDURE
语句(并且只需要运行一次),然后一起运行
变量
执行
语句。