【问题标题】:Oracle Apex: Conditional List of values with concatOracle Apex:具有 concat 的条件值列表
【发布时间】:2013-06-05 22:18:48
【问题描述】:

我正在尝试根据从页面项目中获取的条件构建动态和有条件的 LOV。我遇到了这个例子......

IF :P123_CHOICE = 'EMP' THEN
  RETURN
  'SELECT ename d, empno r
   FROM emp';
ELSE
  RETURN
  'SELECT dname d, deptno r
   FROM dept';
END IF;

但是我需要一些更复杂的东西:

IF :P123_CHOICE = 'EMP' THEN
  RETURN
  'SELECT ename||' : '||esurname d, empno r
   FROM emp
   WHERE (admin ='N' or ADMIN = 'Y')
   ';
ELSE
  RETURN

  'SELECT ename||' : '||esurname d, empno r
   FROM emp
   WHERE admin ='N'
   ';
END IF;

结果我得到错误:

*ORA-06550: line 3, column 21: PL/SQL: ORA-01756: quoted string not properly terminated ORA-01756: quoted string not properly terminated ORA-06550: line 1, column 13: PL/SQL: SQL Statement ignored ORA-06550: line 5, column 4: PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following: ; ORA-01756: quoted string not properly terminated*

这显然是我无法解决的格式问题。非常感谢任何帮助。

【问题讨论】:

    标签: oracle plsql oracle-apex lov


    【解决方案1】:

    为了绕过特殊字符:

    IF :P123_CHOICE = 'EMP' THEN
    RETURN
          q'[select ... ]';
    ELSE
    RETURN
          q'[ select ...]';
    END IF;
    

    Oracle® Database PL/SQL Language Reference 11g Release 1 (11.1)

    【讨论】:

    • 这很酷,也是保持字符串干净的好方法。另一方面,如果您只是想转义单引号,那么单引号可以做到这一点:'select ename d, empno r from emp where admin = ''N'''。两个单引号 = 字符串中的一个转义引号。它非常初级,单引号样式比 q 函数要多得多。
    • 好的,那么你将如何从我的示例中逃脱 concat 呢?像这样 ||'' : ''||
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多