create table tb (id int ,sex varchar(20),name varchar(30))
insert into tb (id,sex,name) values(1,'男','一')
insert into tb (id,sex,name) values(2,'男','二')create proc tb_select
@sex varchar(20),
@name varchar(20),
@sum nvarchar(20) output
as
begin
declare @s nvarchar(500)
declare @n nvarchar(20)
set @s='select @sum=name from tb where sex='''+@sex+''' and name='''+@name+''''
exec sp_executesql @s,N'@sum nvarchar(20) output',@n
end--调用测试
declare @s varchar(20)
--set @s=''
exec dbo.tb_select '男','二',@s[code=SQL]
select @s
--为什么@s还是null值或'',为什么没有改变啊??请高手帮我看看,谢谢[/code]

解决方案 »

  1.   

    create table tb (id int ,sex varchar(20),name varchar(30))
    insert into tb (id,sex,name) values(1,'男','一')
    insert into tb (id,sex,name) values(2,'男','二')create proc tb_select
    @sex varchar(20),
    @name varchar(20),
    @sum nvarchar(20) output
    as
    begin
    declare @s nvarchar(500)
    declare @n nvarchar(20)
    set @s='select @sum=name from tb where sex='''+@sex+''' and name='''+@name+''''
    exec sp_executesql @s,N'@sum nvarchar(20) output',@n output
    end
      

  2.   

    create table tb (id int ,sex varchar(20),name varchar(30))
    insert into tb (id,sex,name) values(1,'男','一')
    insert into tb (id,sex,name) values(2,'男','二')go
    create proc tb_select
    @sex varchar(20),
    @name varchar(20),
    @sum nvarchar(20) output
    as
    begin
    declare @s nvarchar(500)set @s='select @sum=name from tb where sex='''+@sex+''' and name='''+@name+''''
    exec sp_executesql @s,N'@sum nvarchar(20) output',@sum output
    end
    go--调用测试
    declare @s nvarchar(20)
    --set @s=''
    exec dbo.tb_select '男','二',@s output
    select @sdrop table tbdrop proc tb_select
      

  3.   

    create table tb (id int ,sex varchar(20),name varchar(30))
    insert into tb (id,sex,name) values(1,'男','一')
    insert into tb (id,sex,name) values(2,'男','二')go
    create proc tb_select
    @sex varchar(20),
    @name varchar(20),
    @sum nvarchar(20) output
    as
    begin
    declare @s nvarchar(500)set @s='select @sum=name from tb where sex='''+@sex+''' and name='''+@name+''''
    exec sp_executesql @s,N'@sum nvarchar(20) output',@sum output
    end
    go--调用测试
    declare @s nvarchar(20)
    --set @s=''
    exec dbo.tb_select '男','二',@s output
    select name=@sdrop table tbdrop proc tb_select/*
    name                 
    -------------------- 
    二(所影响的行数为 1 行)
    */