带有null或value的游标

时间:2014-01-09 08:23:35

标签: sql sql-server database cursor

我有一两个光标,因为我无法弄清楚如何以任何其他方式执行此操作。
问题是parentid在数据库中可以为null。所以我正在测试@parentid is not null,如果是,我正在运行一个游标where parentid = @parentid然后我有另一个父ID为null的那个。 (下)

declare findParent_c cursor for
        select ID , page
        from   dPageHierarchy
        where  profileid =  @profileId
        and parentid is null;
open findParent_c;
fetch findParent_c into @FindParentId, @ElementCheck;
while @@FETCH_STATUS = 0
begin

     -- Do stuff here.  

fetch findParent_c into @FindParentId, @ElementCheck;
end
close findParent_c;
deallocate findParent_c;

有没有人能解决这个问题?我讨厌在脚本中加倍代码。

2 个答案:

答案 0 :(得分:0)

编辑:此游标检查是否设置了@parentid。如果是,则选择parentid = @parentid如果不是,则选择parentid is null and profileid = @profileid

declare findParent_c cursor for
        select ID , page
        from   dPageHierarchy
        where  (     profileid =  @profileId
                 and parentid is null 
                 and @parentid is null )
           or  (     @parentid is not null
                 and parentid = @parentid );
open findParent_c;

答案 1 :(得分:0)

你在找这个吗?

declare findParent_c cursor for
select ID , page
from   dPageHierarchy
where  profileid =  @profileId
and ( (parentid = @parentid) or (parentid is null and @parentid is null) );