2016-06-09 87 views
-1

我正在嘗試創建一個現在(而不是包)的函數來選擇當前位於我的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 

能給出更多的信息。

回答

2

您正在嘗試同時創建包頭和正文。 你必須創建一個標題,然後是一個正文,帶有單獨的查詢; 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

相關問題