ORA-06550& PLS-00103设置Oracle APEX项目的默认值时出错

时间:2015-12-21 17:35:37

标签: plsql oracle-apex

我试图通过选择具有指定VIDEO_ID的表中的第一个值来设置Oracle APEX 4.2中项目的默认值。在项目中,在默认部分下,我设置了默认值类型 = PL/SQL EXPRESSION,并且在默认值块中,我有输入

SELECT UNIQUE_ALLEGATION_ID 
FROM (
  SELECT UNIQUE_ALLEGATION_ID
  FROM TBL_UNIQUE_ALLEGATION
  WHERE VIDEO_ID = :P2_VIDEO_SELECT) A
WHERE ROWNUM <= 1
ORDER BY ROWNUM;

此代码在我的Oracle编辑器中运行良好(如果我用值替换:P2_VIDEO_SELECT;并且我肯定:P2_VIDEO_SELECT已正确设置。

但是,当我运行该页面时,出现以下错误:

  

ORA-06550:第1行,第43栏:PLS-00103:遇到符号&#34; SELECT&#34;当期待以下之一时:   ( - + case mod new not null <an identifier> <a double-quoted delimited-identifier> <a bind variable>    继续avg计数当前存在最大最小值之前sql stddev sum variance执行forall merge time timestamp interval date       管

1 个答案:

答案 0 :(得分:1)

请记住,接受SQL或PL / SQL片段的Apex属性必须在运行时由Apex执行,并且必须将这些属性嵌入到必须在运行时编译和执行的包装代码中。

因此,例如,类型为&#34; PL / SQL Expression&#34;的源代码。可能会以这样的方式执行:

declare
  temp_var varchar2(4000);
begin
  temp_var := (
SELECT UNIQUE_ALLEGATION_ID 
FROM (
  SELECT UNIQUE_ALLEGATION_ID
  FROM TBL_UNIQUE_ALLEGATION
  WHERE VIDEO_ID = :P2_VIDEO_SELECT) A
WHERE ROWNUM <= 1
ORDER BY ROWNUM
  );
  --use temp_var somewhere
end;

显然,上述代码预计不起作用,这就是为什么您会看到ORA-06550之类的错误。