需要帮助重写使用Cursor的查询

时间:2010-01-30 00:26:34

标签: sql-server sql-server-2005 cursor user-defined-functions

我有一个如下所示的查询:

DECLARE Match_Cursor CURSOR
FOR
   SELECT ID,UserKey,TypeCode
   FROM [DB1].Table1 as t1
OPEN Match_Cursor

FETCH NEXT FROM Match_cursor INTO @ID,@UserKey,@TypeCode;
   WHILE (@@FETCH_STATUS <> -1)
   BEGIN
      INSERT INTO #TempTable
          SELECT  t2.Name, t2.Address, t2.Country, @UserKey, @TypeCode
          FROM  [DB1].[DBO].udf_TableFunction(@ID) as t2
          where @typeCode = 142 AND t2.Country = 'US'
FETCH NEXT FROM Match_cursor INTO @ID,@UserKey,@TypeCode;
   END

SELECT * FROM #TempTable

是否有人建议使用连接重写此内容?假设t1.IDt2.ID之间存在外键关系。

1 个答案:

答案 0 :(得分:0)

使用cross applyTable1.ID传递给udf_TableFunction

这是一个伪代码,介绍如何执行此操作。 (我现在无法访问SSMS,因此无法测试它)

insert #TempTable(...)
select ...
from  table1 t1 cross apply [DBO].udf_TableFunction(t1.ID) t2
where ...