日期:2014-05-16  浏览次数:20572 次

请问sql2008怎样跟踪错误结果
运行了下面的这个游标,出现了“从数据类型 nvarchar 转换为 float 时出错。”的错误,想知道是更新到哪个表的时候出现这个错误,请问如何跟踪?谢谢
Declare @bmc nvarchar(200)
Declare @zdmc nvarchar(100)
Declare @sql nvarchar(1000)
Declare Cur Cursor For
select A.[name] as 表名称,B.name as 字段名称 from sysobjects A 
inner join syscolumns B on A.id=B.id where B.[name]='单元编号'
 and A.xtype='U' and left(a.name,1)<>'_' and left(a.name,3)<>'tmp'
 and left(a.name,4)<>'AYHS' and a.name not like 'www%' and a.name not like '%[a-z]%' 
Open Cur
Fetch next From Cur Into @bmc,@zdmc
while @@FETCH_STATUS =0
begin
set @sql='update ['+@bmc+'] set ['+@zdmc+']=convert(nvarchar(500),单元.楼阁编号)+convert(nvarchar(500),单元.楼层)+convert(nvarchar(500),单元.单元名称) from ['+ @bmc+']   
          inner join 单元 on 单元.单元编号=['+@bmc+'].单元编号  
          inner join 楼阁 on 楼阁.楼阁编号=单元.楼阁编号'   
--set @sql='update ['+  @bmc+ '] set [住户编号]=REPLACE(REPLACE([住户编号],''>'',''''),''<'','''')'
exec(@sql) 
Fetch next From Cur Into @bmc,@zdmc
end
Close Cur
Deallocate Cur


------解决方案--------------------
PRINT @SQL 出来执行就知道了
------解决方案--------------------
Declare @bmc nvarchar(200)
Declare @zdmc nvarchar(100)
Declare @sql nvarchar(1000)
Declare Cur Cursor For
select A.[name] as 表名称,B.name as 字段名称 from sysobjects A 
inner join syscolumns B on A.id=B.id where B.[name]='单元编号'
 and A.xtype='U' and left(a.name,1)<>'_' and left(a.name,3)<>'tmp'
 and left(a.name,4)<>'AYHS' and a.name not like 'www%' and a.name not like '%[a-z]%' 
Open Cur
Fetch next From Cur Into @bmc,@zdmc
while @@FETCH_STATUS =0
begin
set @sql='update ['+@bmc+'] set ['+@zdmc+']=convert(nvarchar(500),单元.楼阁编号)+convert(nvarchar(500),单元.楼层)+convert(nvarchar(500),单元.单元名称) from ['+ @bmc+']   
          inner join 单元 on 单元.单元编号=['+@bmc+'].单元编号  
          inner join 楼阁 on 楼阁.楼阁编号=单元.楼阁编号'   
--set @sql='update ['+  @bmc+ '] set [住户编号]=REPLACE(REPLACE([住户编号],''>'',''''),''<'','''')'
exec(@sql) 改成print @sql
Fetch next From Cur Into @bmc,@zdmc
end
Close Cur
Deallocate Cur