exec 执行拼接的语句时,如何获取语句中的返回值

来源:互联网 发布:淘宝积分1000分多少钱 编辑:程序博客网 时间:2024/06/05 08:48

有事在存储过程中需要各种条件的拼接   如下:

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

 

 

原创粉丝点击