CREATE  procedure  meng1
@gs1 varchar(50),
@gs2 varchar(50),
@gs3 varchar(50),
@a1 int output
as
begin
declare @str1 varchar(5000)
set  @str1=''
if @gs1<>'' 
set @str1=@str1+'  and 公司1=@gs1'
if @gs2<>'' 
set @str1=@str1+'  and 公司2=@gs2'if @gs3<>'' 
set @str1=@str1+'  and 公司3=@gs3'
end;
select @a1=count(*) from user1 where 1=1 +@str1
GO
我想得到count(*)的值报错!

解决方案 »

  1.   

    --tryCREATE  procedure  meng1
    @gs1 varchar(50),
    @gs2 varchar(50),
    @gs3 varchar(50),
    @a1 int output
    as
    declare @a int
    begin
    declare @str1 nvarchar(4000)
    set  @str1=''
    if @gs1<>'' 
    set @str1=@str1+'  and 公司1='''+@gs1+''''
    if @gs2<>'' 
    set @str1=@str1+'  and 公司2='''+@gs2+''''if @gs3<>'' 
    set @str1=@str1+'  and 公司3='''+@gs3+''''
    end;
    select @str1='select @a=count(*) from user1 where 1=1 '+@str1
    exec sp_executesql @str1,N'@a int out',@a1 out
    GO
      

  2.   

    select @a1=count(*) from user1 where 1=1 +@str1
    这里有问题~
    先取出来count(*)后再赋值给@a1
      

  3.   

    我上次碰到这种问题是分成了两句写的,先取count(*),然后再赋给@a1.         寒
      

  4.   

    大家是不是今天有好几次登不上CSDN了?我想知道是我这里有问题还是CSDN有问题!
      

  5.   

    貌似今天CSDN的服务器崩溃了^^;