在Oracle中我可以用这种方式在MERGE语法中引用VARRAY吗?

时间:2014-10-01 13:58:48

标签: oracle merge varray

以下内容会产生错误: [错误] ORA-00904(265:19):PL / SQL:ORA-00904:" INP"。" COLUMN_VALUE":无效标识符

  MERGE INTO tab_mapping tbl_llclm
       USING (
              SELECT COLUMN_VALUE as map_id
                FROM TABLE (p_llcl_map_array) inp)
          ON (inp.COLUMN_VALUE = tbl_llclm.lab_loinc_map_id)
  WHEN NOT MATCHED
  THEN
     INSERT     (tab_map_id,
                 tab_loinc_map_id,
                 last_updated_by,
                 last_updated_date)
         VALUES (p_llc_id,
                 inp.map_id,
                 p_last_updated_by,
                 SYSDATE);

p_llcl_map_array的类型为num_arr(num_arr是SQL类型的数字表)

1 个答案:

答案 0 :(得分:1)

这应该有效。我刚刚将别名inp移到了外面,并通过COLUMN_VALUE

引用了map_id
MERGE INTO tab_mapping tbl_llclm
       USING (
              SELECT COLUMN_VALUE as map_id
                FROM TABLE (p_llcl_map_array) 
             ) inp
          ON (inp.map_id = tbl_llclm.lab_loinc_map_id)
  WHEN NOT MATCHED
  THEN
     INSERT     (tab_map_id,
                 tab_loinc_map_id,
                 last_updated_by,
                 last_updated_date)
         VALUES (p_llc_id,
                 inp.map_id,
                 p_last_updated_by,
                 SYSDATE);