帮忙看看这段sql执行没效果?

truecoffeefox 2007-03-09 04:33:30
use whinfo2004

DECLARE @txxid int,@personid int,@lxfs int

DECLARE authors_cursor CURSOR FOR
SELECT id,personid,lxfsid
FROM dbo.scl_txx
WHERE (personid <> - 1)

OPEN authors_cursor

FETCH NEXT FROM authors_cursor
INTO @txxid, @personid, @lxfs
--按理说这里不需要加这段处理,但是不加就执行不过去
print @txxid
if (@lxfs=null)
BEGIN
update dbo.scl_txx set lxfsid='-1'
where id=@txxid
END
----
WHILE (@@FETCH_STATUS = 0 )

BEGIN
FETCH NEXT FROM authors_cursor
INTO @txxid, @personid, @lxfs

print @txxid

IF (@lxfs=null)
BEGIN
UPDATE dbo.scl_txx SET lxfsid=-1
WHERE id=@txxid
END

END

在sql2005SP2环境下,执行成功,但是数据并没发生变化,高手看看那里出错了,谢谢!
...全文
288 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
truecoffeefox 2007-03-12
  • 打赏
  • 举报
回复
一样没效果……
十一月猪 2007-03-12
  • 打赏
  • 举报
回复
=null 改成 is null
---涛声依旧--- 2007-03-12
  • 打赏
  • 举报
回复
use whinfo2004
GO
DECLARE @txxid int,@personid int,@lxfs int

DECLARE authors_cursor CURSOR FOR
SELECT id,personid,lxfsid
FROM dbo.scl_txx
WHERE (personid <> - 1)

OPEN authors_cursor

FETCH NEXT FROM authors_cursor
INTO @txxid, @personid, @lxfs

WHILE (@@FETCH_STATUS=0)
BEGIN
if (@lxfs IS null)
BEGIN
update dbo.scl_txx set lxfsid='-1'
where id=@txxid
END

IF (@lxfs IS null)
BEGIN
UPDATE dbo.scl_txx SET lxfsid=-1
WHERE id=@txxid
END

FETCH NEXT FROM authors_cursor
INTO @txxid, @personid, @lxfs
END
CLOSE authors_cursor
DEALLOCATE authors_cursor
---涛声依旧--- 2007-03-12
  • 打赏
  • 举报
回复
問題錯在這里:
將if (@lxfs=null)改為if (@lxfs is null)

DECLARE @NULL VARCHAR(10)
SET @NULL = NULL

IF (@NULL IS NULL)
PRINT 'IS NULL'
ELSE
PRINT 'NOT NULL'+@NULL
truecoffeefox 2007-03-09
  • 打赏
  • 举报
回复
正在打补丁,等下试试看
中国风 2007-03-09
  • 打赏
  • 举报
回复
print @txxid
if (@lxfs=null)
BEGIN
update dbo.scl_txx set lxfsid='-1'
where id=@txxid
END

以上放在WHILE (@@FETCH_STATUS = 0 )之后
starsky2006 2007-03-09
  • 打赏
  • 举报
回复
if (@lxfs is null)

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧