我想删除从光标获取的数据而不使用更新
Posted
技术标签:
【中文标题】我想删除从光标获取的数据而不使用更新【英文标题】:i want to delete the data fetching from the cursor without using for update 【发布时间】:2019-08-14 06:09:27 【问题描述】:我有一组来自 select 语句的数据过滤,我需要从表 'SHOP_MATERIAL_ASSIGN_TAB'
中删除这些数据。我用光标来删除。但这在执行时引起了问题。在不使用'for update'
方法的情况下完成它的任何想法。
DECLARE
CURSOR DELDATA_ IS
SELECT B.*
FROM IC_WQ_OLD_LOCATION_TAB A, SHOP_MATERIAL_ASSIGN_TAB B
WHERE A.LOCATION_NO = B.LOCATION_NO
AND A.SITE = B.CONTRACT
AND B.LOCATION_NO = 'HYLIN001'
FOR UPDATE;
TEMP_ DELDATA_%ROWTYPE;
BEGIN
OPEN DELDATA_;
LOOP
FETCH DELDATA_
INTO TEMP_;
EXIT WHEN DELDATA_%NOTFOUND;
DELETE FROM SHOP_MATERIAL_ASSIGN_TAB WHERE CURRENT OF DELDATA_;
END LOOP;
COMMIT;
END;
【问题讨论】:
【参考方案1】:根本不要使用 PL/SQL。
DELETE FROM shop_material_assign_tab
WHERE EXISTS
(SELECT NULL
FROM ic_wq_old_location_tab a
WHERE a.location_no = b.location_no
AND a.site = b.contract)
AND b.location_no = 'HYLIN001'
【讨论】:
以上是关于我想删除从光标获取的数据而不使用更新的主要内容,如果未能解决你的问题,请参考以下文章