【发布时间】:2014-07-29 17:24:17
【问题描述】:
我已经为某人接手了一个项目,此时我们正在努力让应用程序可用,而不是担心最好的方法。也就是说,光标似乎存在我无法弄清楚的问题。我游标中的 select 语句返回 6 行...
DECLARE testCursor cursor for
select r.fldcode, r.rescode, r.[class], f.[print], r.[r print], f.[requestor], r.[r requestor]
from field f INNER JOIN resv r
ON f.fldcode=r.fldcode
where f.requestor = 'Admin Resdas' OR r.[r requestor] = 'Admin Resdas'
Open testCursor
Fetch Next from testCursor;
While @@FETCH_STATUS = 0
BEGIN
PRINT 'IN HERE'
Fetch Next FROM testCursor
END
close testCursor
Deallocate testCursor
如果我在 SQL Management Studio 中运行它,它只会继续运行,但如果我将“OR”更改为“AND”,则光标运行得很好。我错过了什么使它无法使用“OR”语句正确运行?有时不会填充两列,这就是为什么我需要“或”来工作它只是没有意义,因为语句本身执行得很好。
提前感谢您的帮助...
【问题讨论】:
-
也许尝试使用 where 'Admin Resdas' In (f.requestor , r.[r requestor])
-
OR查询应返回更多行,但不应导致无限循环。 -
查询工作正常,
FOR查询的结果集可能非常大。 -
field 和 resv 中有多少条记录包含“Admin Resdas”?
Select count(*), 'F' as tbl from field where requestor='Admin Resdas' union all select count(*), 'r' as tbl from resv where [r requestor] = 'Admin Resdas'你说 6 when and... 但是或可能是 100 万... 这个选择可能有助于量化问题 -
对不起,我之前没有看到这个,我尝试了 'Admin Resdas' In (f.requestor, r.[r requestor]) 并遇到了同样的问题。