2017-02-22 45 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

感谢您与文档链接的回复 –