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

一个困扰了小弟我几个月的有关问题:SQL存储过程有关问题

2012-01-20 
一个困扰了我几个月的问题:SQL存储过程问题1createPROCEDURE UP_Pubs_Test2AS3Declare @SqlStr varchar(10

一个困扰了我几个月的问题:SQL存储过程问题
1 create PROCEDURE UP_Pubs_Test
2 AS
3 Declare @SqlStr varchar(1000)
4 Declare @cntRec int
5 set @SqlStr = 'select @cntRec=count(*) from title'
6 exec (@SqlStr)
7 select @cntRec

在这个存储过程中,我想把变量@cntRec中的值传出,但是无法取出,虽然第6句可以执行,但第7句却不能执行,请教各位高手帮忙解决。

注意:为了问题的简化,我已经省略一部分,但变量@cntRec一定是在一个SQL语句中,也就是说第5句中@SqlStr不能变,第6句不能省略。

[解决办法]
set @SqlStr = 'select @cntRec=count(*) from title ' 
exec (@SqlStr) 
select @cntRec 

--用過的一個笨方法。。。看看要不要用
==>

create table #(num int)
set @SqlStr = 'select count(*) from title ' 
insert into # exec(@sqlStr)
select @cntRec =num from #
select @cntRec
[解决办法]
1 create PROCEDURE UP_Pubs_Test 
2 AS 
3 Declare @SqlStr varchar(1000) 
4 Declare @cntRec int 
5 select @cntRec=count(*) from title 
6 --exec (@SqlStr) 
7 select @cntRec
[解决办法]
create PROCEDURE UP_Pubs_Test 
AS 
Declare @SqlStr nvarchar(1000) 
Declare @cntRec int 
set @SqlStr = N'select @cntRec=count(*) from title '
exec sp_executesql @SqlStr,N'@cntRec int output',@cntRec output 
select @cntRec
[解决办法]
5楼不是告诉你用sp_executesql方法传出么?
[解决办法]

SQL code
declare @cntRec intdeclare @SqlStr nvarchar(1000)declare @where1 nvarchar(100)declare @where2 nvarchar(100)set @where1='id=object_id(''sysobjects'')'set @where2='name<>''id'''set @SqlStr='select @cntRec=count(*) from syscolumns where '+@where1+' and '+@where2--@SqlStr隨便你組裝,下面第二行定義輸出參數,第三行用外面的@cntRec接收輸出數據。exec sp_executesql @SqlStr,    N'@cntRec int output',    @cntRec outputselect @cntRec 

热点排行