SqlServer 临时表、表变量、函数 替代游标

时间:2023-03-10 05:20:36
SqlServer 临时表、表变量、函数 替代游标

http://www.cnblogs.com/chongzi/archive/2011/01/19/1939106.html

临时表

存放在tempdb中

--存储过程中将多表连接结果写入到临时表中,然后通过游标查询临时表内容
--判断临时表是否存在
IF OBJECT_ID('tempdb..#TmpTable') IS NOT NULL
DROP TABLE #TmpTable SELECT a.[a1],a.[a1],b.[b1],b.[b2]
INTO #TmpTable
FROM A a
LEFT JOIN B b ON a.a1 = b.a1

操作游标

DECLARE @orderId NVARCHAR(50),@customerId NVARCHAR(50),@employeeId NVARCHAR(50)
DECLARE myCursor CURSOR FOR
SELECT o.OrderID,o.CustomerID,o.EmployeeID FROM Orders AS o OPEN myCursor
fetch next from myCursor into @orderId,@customerId,@employeeId
while @@fetch_status=0
BEGIN PRINT @orderId
PRINT @customerId
PRINT @employeeId
fetch next from myCursor into @orderId,@customerId,@employeeId
END
close myCursor
deallocate myCursor