[笔记] SQL笔记-While语法

SQL - 运维篇

第一章 SQL笔记-While语法


SQL笔记-While语法

MySQL while语法

### MySQL while语法
DELIMITER //
DROP PROCEDURE IF EXISTS Pgm_while_001;
CREATE PROCEDURE Pgm_while_001() BEGIN
	DECLARE flag INT DEFAULT 0;
	DECLARE tmphost VARCHAR(40);
	DECLARE num int default 0;
	DECLARE hostlist CURSOR FOR SELECT HostName FROM `sql_table1` WHERE IPv4Address != '';
	DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag=1;
	OPEN hostlist;
	FETCH hostlist INTO tmphost;
	WHILE flag <> 1 DO
		SET @newipv4=(SELECT IPv4Address FROM `sql_table1` WHERE IPv4Address != '' AND HostName = tmphost LIMIT 0,1);
		SET @newmac=(SELECT MacAddress FROM `sql_table1` WHERE MacAddress != '' AND HostName = tmphost LIMIT 0,1);
		UPDATE `sql_table1` SET IPv4Address=@newipv4,MacAddress=@newmac WHERE HostName = tmphost AND IPv4Address = '';
        FETCH hostlist INTO tmphost;
	END WHILE;
	CLOSE hostlist;
END
//
DELIMITER ;

CALL Pgm_while_001();

MSSQL while语法-案例1

### MSSQL While语法
# 案例1
USE sql_database
DECLARE
    @Id uniqueidentifier,
	@UserCode nvarchar(50) ,
	@UserAlias nvarchar(50) ,
	@HostName nvarchar(50) ,
	@IPv4Address nvarchar(50) ,
	@MacAddress nvarchar(50) ,
	@LoginName nvarchar(50) ,
	@DeleteTime datetime
DECLARE id_cursor CURSOR
	FOR (SELECT TOP 1000 Id,UserCode,UserAlias,HostName,IPv4Address,MacAddress,LoginName,DeleteTime FROM sql_table1)
	OPEN id_cursor
	FETCH NEXT FROM id_cursor INTO @Id,@UserCode,@UserAlias,@HostName,@IPv4Address,@MacAddress,@LoginName,@DeleteTime
	WHILE @@FETCH_STATUS=0
	BEGIN
		SET @var001=CONVERT(nvarchar(36),@Id)+'.txt'
		INSERT INTO sql_table2
		VALUES (@Id,@UserCode,@UserAlias,@HostName,@IPv4Address,@MacAddress,@LoginName,@var001,@DeleteTime)
	FETCH NEXT FROM id_cursor INTO @Id,@UserCode,@UserAlias,@HostName,@IPv4Address,@MacAddress,@LoginName,@DeleteTime
END
CLOSE id_cursor
DEALLOCATE id_cursor

MSSQL while语法-案例2

### MSSQL While语法
# 案例2
USE sql_database
DECLARE
	@HostName nvarchar(50)
DECLARE a_cursor CURSOR
	FOR (SELECT HostName FROM sql_table1 WHERE IPv4Address='')
	OPEN a_cursor
	FETCH NEXT FROM a_cursor INTO @HostName
	WHILE @@FETCH_STATUS=0
	BEGIN
		UPDATE sql_table1 SET IPv4Address=(SELECT TOP 1 IPv4Address FROM sql_table1 WHERE HostName=@HostName and IPv4Address <> ''),
		MacAddress=(SELECT TOP 1 MacAddress FROM sql_table1 WHERE HostName=@HostName AND MacAddress <> '') WHERE HostName=@HostName AND IPv4Address = ''
		
	FETCH NEXT FROM a_cursor INTO @HostName
END
CLOSE a_cursor
DEALLOCATE a_cursor


参考来源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

歪果仨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值