我有一个如下所示的查询:
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.ID
和t2.ID
之间存在外键关系。
答案 0 :(得分:0)
使用cross apply
将Table1.ID
传递给udf_TableFunction
。
这是一个伪代码,介绍如何执行此操作。 (我现在无法访问SSMS,因此无法测试它)
insert #TempTable(...)
select ...
from table1 t1 cross apply [DBO].udf_TableFunction(t1.ID) t2
where ...