表:test_1
表:test_2
表:test_3
要求是:把test_1和test_2表中ID相等的数据插入到test_3表中,然后把test_1表中T_D字段修改为1(只修改test_1和test_2两个ID相等的)。这个存储过程要怎么写。
把把test_1和test_2表中ID相等的数据插入到test_3表中这个存储过程我会,就是后面这个修改T_ID的不会。
create or replace procedure p_test is
begin
insert into test_3 select test_1.t_id ,test_1.t_a,test_1.t_b,test_1.t_c,test_2.t2_a,test_2.t2_b,test_2.t2_c from test_1,test_2 where test_1.t_id=test_2.t2_id;
commit;
end ;
求大神指点怎么把test_1表中T_D字段修改为1
在线求解。。。。。。。。。。。。。。。。。。
------解决方案--------------------
update test_1 set t_d = 1 where exists (select 0 from test_2 where test_2.id = test_1.id);
另外你写的insert 语句。。好像没有T3_ID的值吧。。
------解决方案--------------------
create or replace procedure p_test is
begin
FOR CUR IN (SELECT * FROM TEST_1 T1, TEST_2 T2 WHERE T1.T_ID = T2.T2_ID) LOOP
UPDATE TEST_1 T1 SET T1.T_D = 1 WHERE T1.T_ID = CUR.T_ID;
INSERT INTO TEST_3
VALUES
(CUR.T_ID, CUR.T_A, CUR.T_B, CUR.T_C, CUR.T2_A, CUR.T2_B, CUR.T2_C);
END LOOP;
commit;
end;