SQL server中的类似Java的三目表达式及游标使用

运行环境: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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值