首页 > 解决方案 > SQL Server 中的临时表避免游标

问题描述

我在 SQL Server 存储过程中编写了以下代码,以避免代码中出现光标。我使用临时表来存储数据并循环访问数据。

SELECT * 
INTO #temp
FROM 
    (SELECT * 
     FROM -----------------) AS x

SET @iRwCnt = @@ROWCOUNT 

CREATE CLUSTERED INDEX idx_tmp ON #temp(ACID) WITH FILLFACTOR = 100

WHILE @iRwCnt > 0
BEGIN
    SELECT TOP 1 @sValue = ACID 
    FROM #temp

    SET @iRwCnt = @@ROWCOUNT 

    IF @iRwCnt > 0
    BEGIN
        SELECT 
            @mregno = regno, @amount = credit, 
            @remark = remark, @trans_type = transtype 
        FROM
            #temp 
        WHERE
            ACID = (SELECT TOP 1 ACID FROM #temp)

        --begin tran
        --my function
        --commit tran

        DELETE FROM #temp 
        WHERE ACID = @sValue --remove processed record
    END
END

DROP TABLE #temp

此过程按我的意愿工作。它将由软件中的成员使用。

我的问题是,由于此代码将由多个用户同时在线运行,是否可以同时在服务器中创建多个临时表?

标签: sql-serverdatabase-cursor

解决方案


推荐阅读