存储过程中,如果一个局部变量的需要从动态拼的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?
浙公网安备 33010602011771号