代码改变世界

存储过程中,如果一个局部变量的需要从动态拼的SQL语句中获得,怎么办?

2018-02-08 11:17  Evan  阅读(35)  评论(0)    收藏  举报

方式1:使用Output类型参数方式

declare @sqlstr nvarchar(4000)
declare @ParmDefinition nvarchar(1000)
declare @code varchar(10)
declare @found char(1)
declare @table_name varchar(100)


set @code='admin'
set @table_name='users'

SET @sqlstr =N'if exists (select * from ' + @table_name + ' where code=@code)  
                    select @found=1  
                else 
                   select @found=0 '
SET @ParmDefinition = N'@code varchar(10),@found char(1) output'
exec sp_executesql @sqlstr, @ParmDefinition,'admin',@found output

select @found as found

方式2:使用临时表方式

declare @sqlstr nvarchar(4000)
declare @code varchar(10)
declare @found char(1)
declare @table_name varchar(100)


set @code='admin'
set @table_name='users'

SET @sqlstr =N'if exists (select * from ' + @table_name + ' where code='''+ @code + ''')  
                    select 1 as found
                else 
                   select 0  as found'
drop table #temp
create table #temp (found char(1))
insert into #temp (found) exec sp_executesql @sqlstr

select @found=found from #temp 
select @found as found

第2种成本比较高 AddComment?