我对t-sql并不擅长,最近我听说过t-sql中基于集合的查询和逐行查询。我只是想提高我对t-sql的了解。我只是想知道差异,以及哪些查询设置基础,哪些是逐行,我很困惑。请任何人解释如果可能的例子将非常有帮助..谢谢。
答案 0 :(得分:2)
我不确定,但我猜你正在谈论cursors。
如果您使用基于集合的查询,请执行以下操作:
update t1 set f1 where f2 = "something"
您正在使用多组记录。
如果您使用游标,MS SQL Server将按记录分类记录:
DECLARE cursor1 CURSOR FOR
SELECT *
FROM t
WHERE f2 = "something"
OPEN cursor1
FETCH NEXT FROM cursor1 INTO @v
IF @@FETCH_STATUS <> 0
PRINT ' <<None>>'
WHILE @@FETCH_STATUS = 0
BEGIN
-- do somethifg with current record
CLOSE cursor1
DEALLOCATE cursor1
如果可能,您应该使用基于集合的查询,因为它通常更快,MS SQL Server可以构建更好的执行计划。
但有时应用程序逻辑非常复杂,很难仅使用基于集合的查询来开发解决方案,在这种情况下您可以使用游标。