当前位置: 代码迷 >> Sql Server >> 一个困扰了小弟我几个月的有关问题:SQL存储过程有关问题
  详细解决方案

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

热度:50   发布时间:2016-04-27 15:28:26.0
一个困扰了我几个月的问题: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

在这个存储过程中,[email protected],但是无法取出,虽然第6句可以执行,但第7句却不能执行,请教各位高手帮忙解决。

注意:为了问题的简化,我已经省略一部分,[email protected][email protected],第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,[email protected] 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 [email protected]+' and [email protected][email protected],下面第二行定義輸出參數,[email protected]exec sp_executesql @SqlStr,    [email protected] int output',    @cntRec outputselect @cntRec
  相关解决方案