版权声明: https://blog.csdn.net/ClearLoveQ/article/details/83579287
1.SQL Server中select 和set 都是赋值用的
DECLARE
@A1 INT
@A2 INT
SET @A1=10
WHILE @A1>0
BEGIN
SELECT @A2=@A1
PRINT @A1+@A2
Set @A1=@A1-1
END
2.用游标将表中查出的一个变量存储到一个变量中
DECLARE
@A1 INT,
@A2 INT
DECLARE YOUCURNAME CURSOR FOR SELECT
Accnt_SN
FROM FAC_COA WHERE SN=2537
OPEN YOUCURNAME --打开游标
fetch next from youcurname into @a1
PRINT @A1
close youcurname --关闭游标
deallocate youcurname --释放游标
3.循环:用游标对表查出的结果集(先测试一列的情况)进行遍历
DECLARE
@A1 VARCHAR(100) --处理结果的变量
DECLARE YOUCURNAME CURSOR FOR SELECT
Accnt_Code --一列
FROM FAC_COA --查询语句
OPEN YOUCURNAME
FETCH NEXT FROM youcurname INTO @A1
WHILE(@@FETCH_STATUS=0)
BEGIN
PRINT @A1 --处理结果
FETCH NEXT FROM youcurname INTO @A1 --下一条
END
CLOSE youcurname
DEALLOCATE youcurname
4.循环:用游标对表查出的结果集(测试多列列的情况)进行遍历
DECLARE
@A1 VARCHAR(100),
@A2 VARCHAR(100) --处理结果的变量
DECLARE YOUCURNAME CURSOR FOR SELECT
Accnt_Code,Accnt_Name --多列
FROM FAC_COA --查询语句
OPEN YOUCURNAME
FETCH NEXT FROM youcurname INTO @A1,@A2 --此处变量位置和查询的列要对应类型
WHILE(@@FETCH_STATUS=0)
BEGIN
PRINT @A1 + @A2 --处理结果
FETCH NEXT FROM youcurname INTO @A1,@A2 --下一条
END
CLOSE youcurname
DEALLOCATE youcurname
5.@@fetch_status
@@fetch_status是MSSQL的一个全局变量
其值有以下三种,分别表示三种不同含义:【返回类型integer】
0 FETCH 语句成功
-1 FETCH 语句失败或此行不在结果集中
-2 被提取的行不存在
@@fetch_status值的改变是通过fetch next from实现的
在遍历循环结果集中,需要“FETCH NEXT FROM Cursor” 进行跳入下一行
6.临时表
#号加名字 创建临时表:
SELECT * INTO #interim FROM FAC_COA
SELECT *FROM #interim
删除临时表:
drop table #interim