我试图使用以下PL / SQL函数 - oracle。
FUNCTION GET_RECORDS_FOR_REFRESH( KEY_ARRAY IN VARCHAR2 ) RETURN SYS_REFCURSOR
IS RET_DATA SYS_REFCURSOR;
SQL_QUEURY VARCHAR2(32767);
BEGIN
SQL_QUEURY:= 'SELECT * FROM PASSESNGERS WHERE ' || KEY_ARRAY ;
OPEN RET_DATA FOR SQL_QUEURY;
RETURN RET_DATA;
END;
END;
KEY_ARRAY包含附加了列名的逗号分隔值。例如KEY_ARRAY =' PAS_PROF_ID IN(15236,85694,45863,59456,42387)'
虽然此函数没有编译错误,但在运行时会导致错误。
java.sql.SQLException: ORA-06550: line 1, column 62:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
. ( * % & = - + ; < / > at in is mod remainder not rem
<an exponent (**)> <> or != or ~= >= <= <> and or like like2
like4 likec between || multiset member submultiset
有人可以告诉我这里的错误是什么,我该怎么办?
提前致谢。
答案 0 :(得分:2)
END; END;
这可能很愚蠢,但我发现你共享的PL / SQL代码中有两个END
语句。这可能就是你获得PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following
的原因。
虽然此函数没有编译错误,但在运行时会导致错误。
PLS错误是编译时错误。删除其中一个 END ,然后重新编译。
此外,最好使用DBMS_OUTPUT.PUT_LINE
并在代码中实际执行查询之前先检查查询格式。