当前位置: 代码迷 >> Sql Server >> 显示游标中的字符串SQL有关问题
  详细解决方案

显示游标中的字符串SQL有关问题

热度:54   发布时间:2016-04-27 15:42:10.0
显示游标中的字符串SQL问题 !
alter   proc   procCheckProvider(
@columnsValue   as   varchar(100)
)
as  
DECLARE   @TName   AS   VARCHAR(50)
DECLARE   @CName   AS   VARCHAR(50)
DECLARE   @STR   AS   VARCHAR(1000)
DECLARE   a1   CURSOR   FOR  
SELECT   sysobjects.name,syscolumns.name   as   columnsName
FROM   sysobjects   INNER   JOIN
            syscolumns   ON   sysobjects.id   =   syscolumns.id  
WHERE   (sysobjects.xtype   =   'u ')   AND   syscolumns.name   =   'providerid '   order   by   sysobjects.name,syscolumns.name

OPEN   a1
FETCH   NEXT   FROM   a1   INTO   @TName,@CName
WHILE   @@FETCH_STATUS   =   0
BEGIN
set   @str= 'if   EXISTS(select   *   from   [ '[email protected]+ ']   where   '[email protected]+ '= ' ' '[email protected]+ ' ' ')
begin
if   exists(select   *   from   '[email protected]+ '   where   '[email protected]+ '= ' ' '[email protected]+ ' ' ')
begin
select   ' '出错 ' '
return     --为什么这里的return不能返回?
end
end
'
--print   @str
EXEC(@STR)
FETCH   NEXT   FROM   a1   INTO   @TName,@CName
END

CLOSE   a1
DEALLOCATE   a1
select   ' '

在上面的return     不能返回呢?而是继续执行呢?
难道不能在那里用return吗?请问该用什么语句在那里返回?

------解决方案--------------------
因为你返回时要关闭游标,所以可以这样来做

将return修改为goto Err1

goto Err1
end
end
'
--print @str
EXEC(@STR)
FETCH NEXT FROM a1 INTO @TName,@CName
END

CLOSE a1
DEALLOCATE a1
return

Err1:
CLOSE a1
DEALLOCATE a1
  相关解决方案