批量插入学生照片

create or replace procedure xjxxgl_syncZp(p_jwxhs IN TYPE_JWXH_VARCHAR2,
                                          p_path  IN VARCHAR2,
                                          p_count out NUMBER) is

  /**
  *  学生照片批量插入

  *  2015年9月7日
  
  p_jwxhs 学生学号字符串数组集
  p_path  照片存放的文件夹路径
  p_count 统计插入照片条数
  */
  TYPE XSCUR IS REF CURSOR; --定义类型变量
  CUR_XS XSCUR; --引用游标的数据类型
  --这种变量通常用于存储过程和函数返回结果集时使用,
  --因为PL/SQL不允许存储过程或函数直接返回结果集,但可以返回类型变量,
  --于是引用游标的类型变量作为输出参数或返回值

  XSTEMP_XH VARCHAR2(30);
  count_start number;  --记录批量插入前数量
  count_end   number;  --记录批量插入后数量

BEGIN
  select count(*) into count_start from xsxxgl_xsjbxx WHERE zppath is not null;
  FOR I in p_jwxhs.first .. p_jwxhs.last LOOP
  
    OPEN CUR_XS FOR
      SELECT xs.jwxh
        FROM xsxxgl_xsjbxx xs
       WHERE xs.jwxh = p_jwxhs(I)
         and xs.zppath is null;
    FETCH CUR_XS
      INTO XSTEMP_XH;
  
    --判断学生照片是否为空,如果为空插入新的照片路径,不为空则不操作
    IF CUR_XS% FOUND THEN
      --如果学生照片为空则插入
      --用户信息表
      UPDATE xsxxgl_xsjbxx YH
         SET YH.Zppath = '/imageservlet?path='||p_path||'/'||p_jwxhs(I)||'.jpg'
       WHERE YH.Jwxh = p_jwxhs(I);
    END IF;
  
    CLOSE CUR_XS;
  END LOOP;
  --统计插入数量
  select count(*) into count_end from xsxxgl_xsjbxx WHERE zppath is not null;
  p_count := count_end - count_start;

exception
  when others then
    raise;
    rollback;
END xjxxgl_syncZp;

 ---来自学生信息模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值