【发布时间】:2015-04-09 10:12:32
【问题描述】:
我正在尝试使用以下 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
谁能告诉我这里有什么错误以及我应该怎么做?
提前致谢。
【问题讨论】:
-
使用
DBMS_OUTPUT.PUT_LINE并在执行前检查查询形式。 -
你如何在
JDBC中调用你的函数? -
哦等等,你的函数肯定有编译错误。有两个 END 语句。
标签: oracle plsql oracle11g dynamic-sql