变量声明中的插入语句有错误PLS-00103(使用case时)

Insert statement in variable declaration has error PLS-00103 (when using case)

我正在使用下面的插入语句来声明 v_text。 我也在 select 语句中使用 case。但是我在案例陈述中收到以下错误。

Error(469,119): PLS-00103: Encountered the symbol "VALUE" when expecting one of the following:     * & = - + ; < / > at in is mod remainder not rem    <an exponent (**)> <> or != or ~= >= <= <> and or like like2    like4 likec between || member submultiset 

 v_text := 'INSERT INTO temp_value '||
           '(ach_id, language, value, value_ivi, dq_nr, unit, leervalue, gg_id)'||
           'SELECT '||p_ach_id||', d.lfd, w.sprache,'||
            case when y.zeige_unit = 1 then regexp_replace(w.value,'(\d+\.\d+)',''||w.unit)  else 
             w.value end value,||
            'w.value, w.value_ivi, '||i||', w.unit, w.leervalue, w.gg_id '||
           ' FROM ZUL_GEN_NEU_Zwischenvaluee_value w
           Join DV_FORMAT_POS_DATENQ y
              ON w.dq_id = y.for_pos_dat_id,'||
           ' (SELECT /*+ no_merge(v) */ DISTINCT v.lfd'||
                  ' FROM   '||
                  '( '||p_vv_text||') v'||
                  ' JOIN ('||v_def_text||') d '||v_def_where||') d '||
           ' WHERE w.ach_id = '||p_ach_id||
           ' AND w.pos_id = '||p_pos_id||;

我没有你所有的变量,但作为一个开始:

 v_text := 'INSERT INTO temp_value '||
           '(ach_id, language, value, value_ivi, dq_nr, unit, leervalue, gg_id)'||
           'SELECT '||p_ach_id||', d.lfd, w.sprache,'||
            case when y.zeige_unit = 1 then regexp_replace(w.value,'(\d+\.\d+)',''||w.unit)  else 
             w.value end ||  -- removed "value,"
            'w.value, w.value_ivi, '||i||', w.unit, w.leervalue, w.gg_id '||
           ' FROM ZUL_GEN_NEU_Zwischenvaluee_value w
           Join DV_FORMAT_POS_DATENQ y
              ON w.dq_id = y.for_pos_dat_id,'||
           ' (SELECT /*+ no_merge(v) */ DISTINCT v.lfd'||
                  ' FROM   '||
                  '( '||p_vv_text||') v'||
                  ' JOIN ('||v_def_text||') d '||v_def_where||') d '||
           ' WHERE w.ach_id = '||p_ach_id||
           ' AND w.pos_id = '||p_pos_id; -- fixed "||;"

(我将 SO 语言设置为 Lua,因为它似乎可以更好地显示引用的文本。)