首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-01-16 
显示游标中的字符串SQL问题 !alterprocprocCheckProvider(@columnsValueasvarchar(100))asDECLARE@TNameAS

显示游标中的字符串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   [ '+@tname+ ']   where   '+@cname+ '= ' ' '+@columnsValue+ ' ' ')
begin
if   exists(select   *   from   '+@tname+ '   where   '+@cname+ '= ' ' '+@columnsValue+ ' ' ')
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

热点排行
Bad Request.