在oracle 11g程序中插入和删除

时间:2013-11-29 07:26:04

标签: plsql oracle11g

我需要编写一个带有输入参数的过程,比如groupid和item ids(array) 我需要插入一个包含值(groupid,itemid [0])的表,如(1,11),(1,12),(1,13)等所有项。我有两列的表(groupid,itemid)。请帮我解决这个问题。我正在尝试编写合并但收到错误

创建或替换程序update_product_group_prc (   in_product_group_key IN INT,
  in_product_key_array IN dbms_utility.maxname_array ) 如 indx pls_integer:= in_product_key_array.FIRST; BEGIN

WHILE(INDX不为空)   LOOP

  MERGE INTO   DIM_PRODUCT_X_GROUP PXG
  USING(SELECT IN_PRODUCT_GROUP_KEY ,
               IN_PRODUCT_KEY_ARRAY(INDX)  IN_PRODUCT_KEY_ARRAY
        FROM DUAL) IN_TBL
  ON(IN_TBL.IN_PRODUCT_GROUP_KEY=PXG.PRODUCT_GROUP_KEY)
  WHEN MATCHED THEN

   -- DELETE --need to delete source records which r not here in array.
   -- WHERE 
  WHEN NOT MATCHED THEN
    INSERT (PRODUCT_GROUP_KEY,PRODUCT_KEY)
    VALUES (IN_TBL.IN_PRODUCT_GROUP_KEY,IN_TBL.IN_PRODUCT_KEY_ARRAY);`

INDX:= IN_PRODUCT_KEY_ARRAY.NEXT(INDX);   END LOOP;

END update_product_group_prc;

  

错误(16,41):PL / SQL:ORA-00936:缺少表达式

1 个答案:

答案 0 :(得分:0)

您遇到语法错误。评论“WHEN MATCHED THEN”片段。 http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9016.htm#SQLRF55028