有事在存储过程中需要各种条件的拼接 如下:
create proc test(@name varchar(30))
as
begin
declare @sql varchar(4000)
set @sql='select job_id from jobs where 1=1'
if @name <> ''
set @sql=@sql+' and job_desc like ''%'+@name+'%'''
exec(@sql)
end
在这个时候我们想获取job_id如何处理呢! 以下是解决方案
create proc test(@name varchar(30))
as
begin
declare @sql nvarchar(4000)
declare @id int
set @sql='select @id=job_id from jobs where 1=1'
if @name <> ''
set @sql=@sql+' and job_desc like ''%'+@name+'%'''
exec sp_executesql @sql,N'@id int output',@id output
select @id
end
注意:executesql 参数如果是字符的话 类型必须是ntext/nchar/nvarchar