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;
---来自学生信息模块