需要有关重写使用游标的查询的帮助

发布于 2024-08-19 12:01:32 字数 633 浏览 6 评论 0原文

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

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之间存在外键关系。

I have a query that looks like this:

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

Does anyone have suggestions for rewriting this using joins? Assume there is a foreign key relation ship between t1.ID and t2.ID.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

纸短情长 2024-08-26 12:01:32

使用 cross apply 传递 Table1.IDudf_TableFunction

这是一个关于如何执行此操作的伪代码。
(我现在无法访问SSMS,所以无法测试它)

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

Use cross apply to pass Table1.ID to udf_TableFunction.

Here is a pseudo code on how you might go about to do so.
(I don't have access to SSMS right now so couldn't test it)

insert #TempTable(...)
select ...
from  table1 t1 cross apply [DBO].udf_TableFunction(t1.ID) t2
where ...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文