为什么我的存储过程没有执行结果,也就是表中的记录没有被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 outputIF(@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
ENDGO
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 outputIF(@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
ENDGO
解决方案 »
- 【GridView怎么删除数据后还返回当前页 而不是第一页】
- Drawstring画出来的文本的边距问题
- WinForm下DataGridView编辑状态下删除最后一行问题
- 在C#中查找窗体内所有的文本框,并且让一部分的文本框只能输入数字?
- 循环累加的问题
- 大家快顶
- RichTextBox 我的这个控件用RichTextBox.Text="值";测试浏览的时候,出现The evaluation period for RichTextBox has finished
- 知道HTM文件的物理路径,怎样在网页程序里调用显示
- c写的结构体函数在C#中调用问题
- 如何用正则表达式分解此字符串?
- 如何从字符串中将E-MAIL地址提取出来?
- 正则表达式的问题
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 outputIF(@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了
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
谢谢各位!!!