2017-02-22 6 views
0

ich habe 12c die folgenden Code für Tabellenwert-Funktion in Oracle auf windows8 folgendTabellenwert-Funktion Syntaxfehler

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;  

aber ich erhalte den Fehler Error (2,13): PLS-00103: Das Symbol "(" bei einem der folgenden erwartet:: =.), @% Standardzeichen Das Symbol ": =" wurde durch "(" ersetzt.

und ich weiß nicht warum, obwohl Ich bin diesem Beispiel gefolgt Table-Valued Functions in ORACLE 11g ? (parameterized views)

was

Antwort

1

Entfernen Sie die Größe Einschränkung für das formale Argument falsch ist:

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

From the documentation:

... Sie können nicht eine Einschränkung in einer formalen Parameter Deklaration enthalten

+0

danke für Ihre Antwort mit Dokumentationslink –

Verwandte Themen