当前位置: 代码迷 >> Oracle管理 >> oracle存储过程,第一回写,求大神们指点。在线求解。
  详细解决方案

oracle存储过程,第一回写,求大神们指点。在线求解。

热度:92   发布时间:2016-04-24 04:20:40.0
oracle存储过程,第一次写,求大神们指点。。。在线求解。。。。。
表: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的值吧。。
------解决方案--------------------
引用:
表: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
在线求解。。。。。。。。。。。。。。。。。。


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;
  相关解决方案