PLS-00103:期待以下任一操作时遇到符号“IS”

PLS-00103:期待以下任一操作时遇到符号“IS”

问题描述:

我正在尝试创建一个现在(而不是包)的函数来选择当前位于我的OP_GUIDE_VIEW中的列数据。PLS-00103:期待以下任一操作时遇到符号“IS”

只需要一个功能,选择那里有什么。不修改任何东西,不要以为我需要参数或任何东西。我到目前为止是以下内容;然而,我无法弄清楚这个错误来拯救我的生命: - 有一个错误@ IS C1 V_CURSOR;

我有什么权利现在:

create or replace 
PACKAGE PKG_OPGUIDE_COLLECTIONDATA AS 

type v_cursor is ref cursor 
return OPGUIDE_VIEW%rowtype; 
c2 v_cursor; 
r_c2 c2%rowtype; 

function fn_opview return v_cursor 
is c1 v_cursor; 
begin 
open c1 for select * from OPGUIDE_VIEW; 
return c1; 
end; 

begin 
c2 := fn_opview; 
loop 
fetch c2 into r_c2; 
exit when c2%notfound; 
dbms_output.put_line(initcap(r_c2.JOB_NAME)); 
end loop; 
close c2; 
end; 

END PKG_OPGUIDE_COLLECTIONDATA; 

错误:如果需要

PLS-00103: Encountered the symbol "IS" when expecting one of the following: 
constant exception <an identifier> 
    <a double-quoted delimited-identifier> table long double ref 
    char time timestamp interval date binary national character 
    nchar 

能给出更多的信息。

您正在尝试同时创建包头和正文。 你必须创建一个标题,然后是一个正文,带有单独的查询; here你会发现更多。 的你怎么可以编辑代码的一个例子:

设置:

create table OPGUIDE_VIEW(JOB_NAME varchar2(100)); 
insert into OPGUIDE_VIEW values ('job1'); 
insert into OPGUIDE_VIEW values ('job2'); 

包创建:

CREATE OR REPLACE PACKAGE PKG_OPGUIDE_COLLECTIONDATA AS 
    FUNCTION fn_opview 
     RETURN SYS_REFCURSOR; 

    PROCEDURE printData; 
END; 
/
CREATE OR REPLACE PACKAGE BODY PKG_OPGUIDE_COLLECTIONDATA AS 
    FUNCTION fn_opview 
     RETURN SYS_REFCURSOR IS 
     c1          SYS_REFCURSOR; 
    BEGIN 
     OPEN c1 FOR SELECT * FROM OPGUIDE_VIEW; 

     RETURN c1; 
    END; 

    PROCEDURE printData IS 
     c2          SYS_REFCURSOR; 
     r_c2         OPGUIDE_VIEW%ROWTYPE; 
    BEGIN 
     c2 := fn_opview(); 

     LOOP 
      FETCH c2 INTO r_c2; 

      EXIT WHEN c2%NOTFOUND; 
      DBMS_OUTPUT.put_line(INITCAP(r_c2.JOB_NAME)); 
     END LOOP; 

     CLOSE c2; 
    END; 
END PKG_OPGUIDE_COLLECTIONDATA; 

打电话给你的程序:

SQL> set serveroutput on 
SQL> 
SQL> begin 
    2 PKG_OPGUIDE_COLLECTIONDATA.printData; 
    3 end; 
    4/
Job1 
Job2 

PL/SQL procedure successfully completed. 

SQL> 
+0

有没有过到在此之前使用PL-SQL,有点在这里的黑暗中拍摄。我知道我错过了一些相当简单的事情,对此感到遗憾。 - 我的目标是回报多种价值观,而不是单一价值观,这种协议可以做到这一点吗?我的功能本身在正在努力完成的道路上吗? – SQLHelp

+1

我刚刚编辑,以显示一种方法来获得您的需求 – Aleksej

+0

我发布后找出它。哈哈对不起,打算解决按钮。 – SQLHelp