SQL使用存储过程,根据列值更新行值

试题:

表1:

ID          MODEL       VALUE

1              cpu                2

1              mem              4

2              cpu                4

3              mem              8

表2:

ID             CPU       MEM

1                 ?             ?

2                 ?             ?

3                 ?             ?

要求:用表一更新表二

如何使用列来更新行呢?Update语句是不可能了,应该使用游标向下循环来判断

表1中第二列的值,根据第二列的值不同执行不同的SQL语句。

create or replace procedure P_t12
as

var_col1 varchar2(200);
var_col2 varchar2(200);
var_col3 varchar2(200);

cursor cur is
select * from t1;

begin
  for temp_record in cur loop
    var_col1 := temp_record.col1;
    var_col2 := temp_record.col2;
    var_col3 := temp_record.col3;
      if (temp_record.col2 = 'cpu') then
         update t2 set cpu = var_col3 where t2.ID = var_col1;
      elsif (temp_record.col2 = 'mem') then
         update t2 set mem = var_col3 where t2.ID = var_col1;
      end if;
      commit;
  end loop;
end;


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值