我正在使用Oracle Apex,并基于从plsql主体返回sql创建报告。
我的声明是这样的:
DECLARE
l_query varchar2(1000);
BEGIN
l_query := 'SELECT ' || :P10_MYVAR || ' from dual ';
return l_query;
END;
我收到以下错误消息:
ORA-20999: Parsing returned query results in "ORA-20999: Failed to parse SQL query! <p>ORA-06550: line 3, column 25: ORA-00936: missing expression</p>".
如果我尝试不使用任何绑定变量,它会编译得很好:
DECLARE
l_query varchar2(1000);
BEGIN
l_query := 'SELECT sysdate from dual ';
return l_query;
END;
我不明白为什么会发生这种错误。如果我直接在数据库中运行命令:
SELECT :P10_MYVAR from dual
这个没问题。我为什么要犯这个错误?
发布于 2020-04-03 21:54:54
想必你的意思是:
DECLARE
l_query varchar2(1000);
BEGIN
l_query := 'SELECT :P10_MYVAR from dual';
return l_query;
END;
也就是说:您希望在查询中使用参数名,而不是将其与字符串连接。
发布于 2020-10-04 13:48:27
在使用Apex表达式时遇到相同的错误,下面的查询为我工作
declare
v_sql varchar2(4000);
begin
if :P8_TYPE = 'C' then
return q'~
select ROWID,
ID,
C1,
TXDATE,
TRANSACTIONTYPE,
DEBIT,
CREDIT,
BALANCE
from TRANSMASTER
where
TXDATE BETWEEN TO_DATE (:P8_FROMDT, 'mm/dd/yyyy') AND TO_DATE (:P8_TODT, 'mm/dd/yyyy') AND CREDIT > 0;
~';
else
return q'~
select ROWID,
ID,
C1,
TXDATE,
TRANSACTIONTYPE,
DEBIT,
CREDIT,
BALANCE
from TRANSMASTER
where
TXDATE BETWEEN TO_DATE (:P8_FROMDT, 'mm/dd/yyyy') AND TO_DATE (:P8_TODT, 'mm/dd/yyyy') AND DEBIT > 0;
~';
end if;
end;
https://stackoverflow.com/questions/61020836
复制相似问题