最近刚接触oracle数据库,想实现如图的效果。
表2中的SGID为主键,表3中的SGID为外键。
通过网上查资料,自己写了一个存储过程+动态游标的方法来实现。结果发现不仅新插入的值只会重复插入表1的第一列,连以前表2存在内容也一起重复同步了。
我的代码如下,求大神指点一下如何改进,不胜感激。
CREATE OR REPLACE PROCEDURE P_TEST
IS
-- 1. 游标获得 table_1 表数据
CURSOR T1_CURSOR
IS SELECT T.MEMBER,T.MING FROM table_1 T;
-- 2. 游标获得 获得table_2 表数据
CURSOR T2_CURSOR
IS SELECT T.SGID,T.MING FROM table_2 T;
BEGIN
-- 3. 嵌套循环获得需要处理的数据
FOR FOR_T2_CURSOR IN T2_CURSOR
LOOP
FOR FOR_T1_CURSOR IN T1_CURSOR
LOOP
-- 4. 判断
IF FOR_T1_CURSOR.MING = FOR_T2_CURSOR.MING
THEN
-- 5. 插入数据
INSERT INTO table_3 (MEMBER,MING,SGID)
VALUES(FOR_T1_CURSOR.MEMBER,,FOR_T1_CURSOR.MING,FOR_T2_CURSOR.SGID);
END IF;
END LOOP;
END LOOP;
--6. 结束
END P_TEST;