【发布时间】:2013-12-15 08:05:03
【问题描述】:
我需要使用 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;
开始
WHILE(索引不为空) 循环
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 update_product_group_prc;
错误(16,41):PL/SQL:ORA-00936:缺少表达式
【问题讨论】:
-
该块有点奇怪,您循环了
INDX,但循环中没有使用该值。因此,您多次完全执行相同的语句。你所在街区的第 16 行是哪一行? -
您在 VALUES 子句中缺少 INDEX:认为是这样的:VALUES (IN_TBL.IN_PRODUCT_GROUP_KEY,IN_TBL.IN_PRODUCT_KEY_ARRAY(INDEX));
-
请看一下程序。我对 oracle 很陌生。我希望我的要求你得到它也请提供任何其他解决方案。我无法创建临时表并且在插入值时抛出循环,找不到对象。执行我的任务只是一个想法。