存储过程,急?

ishero 2006-03-30 11:21:05
为什么我的存储过程没有执行结果,也就是表中的记录没有被updata掉呀?
CREATE PROCEDURE LB_XL
(
@i_tabname varchar(30),
@i_bhzid varchar(8),
@i_mj varchar(30)
)
AS
DECLARE
@i_lb integer,
@c_lb varchar(20),
@i_bhz integer,
@sql1 nvarchar(400),
@sql2 nvarchar(600)
set @sql1='select @a=count(*) from '+@i_tabname+ ' where bhzid=' +@i_bhzid
exec sp_executesql @sql1,N'@a int output',@i_bhz output

IF(@i_bhz>=0)
BEGIN
select @i_lb=count(distinct A.name) from A where A.bhzid=@i_bhzid

WHILE @i_lb >0
BEGIN
set @c_lb =cast(@i_lb as varchar(20))
set @sql2= 'update A set '+@i_mj+'=isnull((select sum(ltarea) as area from '+@i_tabname+' where (lbid='+@c_lb+') and (bhzid='+@i_bhzid+')),0) where (name='+@c_lb+') and (bhzid='+@i_bhzid+')'
exec (@sql2)
set @i_lb=@i_lb - 1
END
END

GO
...全文
166 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Knight94 2006-03-30
  • 打赏
  • 举报
回复
你可以在执行的时候,打开profiler来查看存储是否执行
Knight94 2006-03-30
  • 打赏
  • 举报
回复
例如:
DECLARE
@i_tabname varchar(30),
@i_bhzid varchar(8),
@i_mj varchar(30)
set @i_tabname='YY'
set @i_bhzid='02'
set @i_mj='YYmj'

exec LB_XL @i_tabname, @i_bhzid, @i_mj
Knight94 2006-03-30
  • 打赏
  • 举报
回复
to 但是使用查询分析器调试怎么都没有结果

你怎么调试的
如果要执行你的存储,需要给参数赋值
ishero 2006-03-30
  • 打赏
  • 举报
回复
每个update都要commit吗?
zhaiyf 2006-03-30
  • 打赏
  • 举报
回复
你执行完加上一个提交语句,有提交语句吧?
ishero 2006-03-30
  • 打赏
  • 举报
回复
急求解决,谢谢!!!!!!!
ishero 2006-03-30
  • 打赏
  • 举报
回复
我使用下面的在查询分析器中试过了有结果的,记录被update了
DECLARE
@i_lb integer,
@c_lb varchar(20),
@i_bhz integer,
@sql1 nvarchar(400),
@sql2 nvarchar(600),

@i_tabname varchar(20),
@i_bhzid varchar(3),
@i_mj varchar(20)
set @i_tabname='YY'
set @i_bhzid='02'
set @i_mj='YYmj'

set @sql1='select @a=count(*) from '+@i_tabname+ ' where bhzid=' +@i_bhzid
exec sp_executesql @sql1,N'@a int output',@i_bhz output

IF(@i_bhz>=0)
BEGIN
select @i_lb=count(distinct A.name) from A where A.bhzid=@i_bhzid

WHILE @i_lb >0
BEGIN
set @c_lb =cast(@i_lb as varchar(20))
set @sql2= 'update A set '+@i_mj+'=isnull((select sum(ltarea) as area from '+@i_tabname+' where (lbid='+@c_lb+') and (bhzid='+@i_bhzid+')),0) where (name='+@c_lb+') and (bhzid='+@i_bhzid+')'
exec (@sql2)
set @i_lb=@i_lb - 1
END
END
但是使用查询分析器调试怎么都没有结果,记录一个都没有被update了
ishero 2006-03-30
  • 打赏
  • 举报
回复
加了commit就好了
谢谢各位!!!

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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