运行环境:SQL server 2008R2
表达式:SELECT (CASE WHEN 1=1 THEN 'True' ELSE 'False' END)
BEGIN
DECLARE @status VARCHAR(50);--流程节点字段
DECLARE @ear_mark VARCHAR(5);--耳标
DECLARE @rfid VARCHAR(24);
DECLARE @farm_id INTEGER;
DECLARE @born_date VARCHAR(30);
DECLARE @father_serial VARCHAR(20);
DECLARE @mother_serial VARCHAR(30);
DECLARE @supplier VARCHAR(50);--供应商
DECLARE @breed VARCHAR(20);--品种
DECLARE @sex VARCHAR(2);
DECLARE @is_import VARCHAR(2);--是否进口
DECLARE @animal_status VARCHAR(10);--牛羊状态(入园、出园、死亡)
DECLARE @status_time VARCHAR(10);
DECLARE @animal_type VARCHAR(10);
DECLARE @ruyuan_time VARCHAR(10);
DECLARE @unit VARCHAR(5);
DECLARE @counts INTEGER;--存储条数
DECLARE @cysw INTEGER;--出园或死亡
DECLARE @swrq VARCHAR(20);--出园或死亡
--声明入园流程信息
DECLARE from_inserted CURSOR FOR
SELECT
dt.bianHao,dt.rfid,dt.nongChang,dt.FbianHao,
dt.MbianHao,main.gongYingShang,dt.pinZhong,
dt.xingBie,main.isJinKou,main.RYdate,dt.unit
FROM
formtable_main_1176 main,
formtable_main_1176_dt1 dt,
inserted i--牛羊入库表
WHERE
main.requestid = i.requestid AND
main.id = dt.mainid AND
i.status = '牛羊入园归档';--入库表多条行信息
--声明出园/死亡流程信息
DECLARE from_inserted_out CURSOR FOR
SELECT
dt.rfid,main.cysw,main.cyrq,main.swrq
FROM
formtable_main_1177 main,
formtable_main_1177_dt1 dt,
inserted i--牛羊入库表
WHERE
main.requestid = i.requestid AND
main.id = dt.mainid AND
i.status = '牛羊出园归档';--出库表多条行信息
if update(status)
begin
SELECT @status = status FROM inserted;--status赋值
IF @status = '牛羊入园归档'
BEGIN
OPEN from_inserted;
FETCH from_inserted INTO @ear_mark,@rfid,@farm_id,@father_serial,@mother_serial,@supplier,@breed,@sex,@is_import,@ruyuan_time,@unit
WHILE @@fetch_status = 0--循环条件
begin
SELECT @counts = COUNT(*)
FROM sw_animal_bas_info
WHERE RFID = @rfid;
IF @counts = 0 --RFID无对应信息
INSERT sw_animal_bas_info(ear_mark,RFID,farm_id,father_serial,mother_serial,supplier,breed,sex,is_import,status,animal_type,ruyuan_time,unit)
VALUES(@ear_mark,@rfid,@farm_id,@father_serial,@mother_serial,@supplier,@breed,@sex,@is_import,'入园',(SELECT(CASE WHEN @unit='只' THEN 1 ELSE 0 END)),@ruyuan_time,@unit);
FETCH NEXT FROM from_inserted INTO @ear_mark,@rfid,@farm_id,@father_serial,@mother_serial,@supplier,@breed,@sex,@is_import,@ruyuan_time,@unit
end
CLOSE from_inserted;
END
ELSE IF @status = '牛羊出园归档'
BEGIN
OPEN from_inserted;
FETCH from_inserted_out INTO @rfid,@cysw,@status_time,@swrq
WHILE @@fetch_status = 0--循环条件
begin
SELECT @counts = COUNT(*)
FROM sw_animal_bas_info
WHERE RFID = @rfid;
IF @counts = 1 --型号对应一条信息
UPDATE sw_animal_bas_info
SET status = (SELECT (CASE WHEN @cysw = 0 THEN '出园' ELSE '死亡' END)),
status_time = (SELECT (CASE WHEN @status_time = null THEN @swrq ELSE @status_time END))
WHERE RFID = @rfid;
FETCH NEXT FROM from_inserted INTO @rfid,@cysw,@status_time,@swrq
end
CLOSE from_inserted_out;
END
end
END