2017-02-22 46 views
0

我有以下爲以下表值函數語法錯誤

CREATE TABLE MisJob 
    (ID RAW(16), 
JobTitle VARCHAR2(35 BYTE), 
MinSalary NUMBER(6,0), 
MaxSalary NUMBER(6,0), 
    PRIMARY KEY (ID) 
) 


CREATE TYPE MISJOBType AS OBJECT (JobTitle VARCHAR2(35 BYTE), MinSalary NUMBER(6,0),MaxSalary NUMBER(6,0)); 

CREATE TYPE MISJOBTypeCol AS TABLE OF MISJOBType; 

CREATE OR REPLACE FUNCTION fEmployee (jobid IN RAW(16)) 
RETURN MISJOBTypeCol PIPELINED IS 
BEGIN 
    FOR i IN (SELECT * FROM MisJob)LOOP 
    PIPE ROW(MISJOBType(i.JobTitle, i.MinSalary,i.MaxSalary)); 
    END LOOP; 
    RETURN; 
END;  

,但我得到的錯誤 錯誤(2,13)的表值函數在Oracle 12c中的代碼對Windows8的 :PLS-00103:遇到符號「(」時,期待以下之一:= =。),@%默認字符符號「:=」代替「(」繼續。

我不知道爲什麼即使我跟着這個例子 Table-Valued Functions in ORACLE 11g ? (parameterized views)

什麼是錯的

回答

1

的正式參數中刪除尺寸約束:

CREATE OR REPLACE FUNCTION fEmployee (jobid IN RAW) 
... 

From the documentation

...你不能包括在正式參數聲明的約束

+0

感謝您與文檔鏈接的回覆 –