当前位置: 代码迷 >> Sql Server >> MSSQL 程序调用存储过程 执行到command.ExecuteNonQuery()没反应,该如何解决
  详细解决方案

MSSQL 程序调用存储过程 执行到command.ExecuteNonQuery()没反应,该如何解决

热度:545   发布时间:2016-04-24 10:33:22.0
MSSQL 程序调用存储过程 执行到command.ExecuteNonQuery()没反应
程序调用存储过程 执行到command.ExecuteNonQuery()时没反应了 停在那里一直运行状态 检查发现存储过程加上下面一段:
 
DECLARE IMPDataCheck_Cursor CURSOR FOR --声明游标
        select 
              ID,Name,Sex 
        from EX..A
OPEN IMPDataCheck_Cursor  --开启游标

FETCH NEXT FROM IMPDataCheck_Cursor --循环读取游标数据
           into @ID,@Name,@Sex
WHILE @@FETCH_STATUS = 0
set @errorMsg=''
            if(@Name='' or @Name is  NULL or DATALENGTH(@Name)/LEN(@Name)<>2)
               set @errorMsg='姓名格式错误'
            

if(@errorMsg<>'')
INSERT INTO EX..Err_Log values(@ID,@errorMsg)
 
CLOSE IMPDataCheck_Cursor  --关闭游标
DEALLOCATE IMPDataCheck_Cursor   --释放游标


加上这一段就不行了 注释掉就OK 请问下是怎么回事
------解决方案--------------------
@@FETCH_STATUS = 0 
体内至少要加上
FETCH NEXT FROM IMPDataCheck_Cursor --循环读取游标数据
            into @ID,@Name,@Sex


---try
DECLARE IMPDataCheck_Cursor CURSOR FOR --声明游标
         select 
               ID,Name,Sex 
         from EX..A
 OPEN IMPDataCheck_Cursor  --开启游标
 
FETCH NEXT FROM IMPDataCheck_Cursor --循环读取游标数据
            into @ID,@Name,@Sex
 WHILE @@FETCH_STATUS = 0
 begin
 set @errorMsg=''
             if(@Name='' or @Name is  NULL or DATALENGTH(@Name)/LEN(@Name)<>2)
                set @errorMsg='姓名格式错误'
             
 
if(@errorMsg<>'')
 INSERT INTO EX..Err_Log values(@ID,@errorMsg)
  FETCH NEXT FROM IMPDataCheck_Cursor --循环读取游标数据
            into @ID,@Name,@Sex
end
 CLOSE IMPDataCheck_Cursor  --关闭游标
 DEALLOCATE IMPDataCheck_Cursor   --释放游标
 
  相关解决方案