【问题标题】:How to update the below statement, i am getting error while update如何更新以下语句,更新时出现错误
【发布时间】:2023-01-10 16:00:36
【问题描述】:

我正在尝试如下更新 RRP_VALIDATION 值,但由于 sql 命令未正确结束而出现错误,如何以正确的格式运行以下语句。

UPDATE HES_REPORT_REF_PARAMS 
SET RRP_VALIDATION = 'select to_char(RECONCILED_ID), decode(STATUS, 'R', 'RECONCILED', 'UNRECONCILED')||' - bank '||BANK_CODE||' - date '||to_char(RECONCILED_DATE, 'DD-MON-YYYY') from HES_BANK_RECONCILED_GROUPS where CONTROL_CONTEXT_ID = TO_NUMBER(:PARAMETER.BPX_CCI) order by RECONCILED_ID desc'
WHERE HES_REPORT_REF_PARAMS.RRP_MODULE_NUM = '100';

【问题讨论】:

    标签: sql plsql oracle-apex plsqldeveloper plsql-package


    【解决方案1】:

    您能否尝试用这样的双单引号替换单引号:

    UPDATE HES_REPORT_REF_PARAMS 
    SET RRP_VALIDATION = 'select to_char(RECONCILED_ID), decode(STATUS, ''R'', ''RECONCILED'', ''UNRECONCILED'')||'' - bank ''||BANK_CODE||'' - date ''||to_char(RECONCILED_DATE, ''DD-MON-YYYY'') from HES_BANK_RECONCILED_GROUPS where CONTROL_CONTEXT_ID = TO_NUMBER(:PARAMETER.BPX_CCI) order by RECONCILED_ID desc'
    WHERE HES_REPORT_REF_PARAMS.RRP_MODULE_NUM = '100';
    

    【讨论】:

      【解决方案2】:

      一个简单的选择是使用 q-quoting 机制,这样您就不必担心必须用两个单引号括起来的字符串文字(这可能会变得非常难看)。

      UPDATE HES_REPORT_REF_PARAMS
         SET RRP_VALIDATION =
                q'[select to_char(RECONCILED_ID), decode(STATUS, 'R', 'RECONCILED', 'UNRECONCILED')||' - bank '||BANK_CODE||' - date '||to_char(RECONCILED_DATE, 'DD-MON-YYYY') from HES_BANK_RECONCILED_GROUPS where CONTROL_CONTEXT_ID = TO_NUMBER(:PARAMETER.BPX_CCI) order by RECONCILED_ID desc]'
       WHERE HES_REPORT_REF_PARAMS.RRP_MODULE_NUM = '100';
      

      简化:

      这就是你所拥有的:

      SQL> select 'select 'a' from dual' from dual;
      select 'select 'a' from dual' from dual
                       *
      ERROR at line 1:
      ORA-00923: FROM keyword not found where expected
      

      两个单引号:

      SQL> select 'select ''a'' from dual' from dual;
      
      'SELECT''A''FROMDUAL
      --------------------
      select 'a' from dual
      

      q-引用机制:

      SQL> select q'[select 'a' from dual]' from dual;
      
      Q'[SELECT'A'FROMDUAL
      --------------------
      select 'a' from dual
      
      SQL>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-11
        • 1970-01-01
        • 2011-05-03
        • 2016-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多