linux shell使用loop和cursor批量修改sql

USER="zhangsan"
PWD="123456"
DBNAME="JTP"

sqlplus ${USER}/${PWD}@${DBNAME}<<EOF

declare
    #定义游标并赋值cursor 与is一起使用
    cursor stu_cur is select * from tbstudents;
    #定义类型rowtype,stu_row用户获取表字段值
    stu_row tbstudent%rowtype
    #开始执行
    begin
    #打开游标
    open stu_cur
    #开始循环
    loop
    #退出循环结束条件
    exit when stu_cur%notfound
    #将游标的值赋值到rowtype
    fetch stu_cur into stu_row
    #更新表字段,将没有身份证的学生状态置位0(不正常)
    update set status='0' where name=stu_row.name and id_code=' ';
    #或者使用下面sql,,更高效;
    if stu_row.id_code = ' ' then
        update student set status='0' where name=stu_row.name;
    elsif stu_row.id_kind = ' ' then
        update student set status='0' where name=stu_row.name;
    elsif stu_row.name = ' ' or stu_row.sex = ' ' then
        update student set status='0' where name=stu_row.name;
    end if;
    #结束循环
    end loop;
    #关闭游标
    close stu_cur;
    end;

EOF

  • 1.sqlplus
  • 2.delcare
  • 3.cursor
  • 4.begin
  • 5.open cursor
  • 6.loop
  • 7.exit
  • 8.fetch
  • 9.sql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值