日期:2014-05-18  浏览次数:20599 次

大家帮我看看这个存储过程哪里错了呢?该怎么修改呢?
CREATE   proc   getInfo
@sip   varchar(50),   /*传入参数*/
@dip   varchar(50),   /*传入参数*/
@Zgjcs   int   output,
@Zbgjcs   int   output,
@Gjcs   int   output,
@Zfsbs   int   output,
@Zfssjl   int   output,
@Zjsbs   int   output,
@Zjssjl   int   output,
@Fsbs   int   output,
@Fssjl   int   output
as
begin
    @Zgjcs   =   select   (select   count(*)   from   Program1   where     sip=@sip   )   +   (select   count(*)     from   Program2   where     sip=@sip);
    @Zbgjcs   =   select   (select   count(*)     from   Program1   where     dip=@dip)   +   (select   count(*)     from   Program2   where     dip=@dip);
    @Gjcs   =   select   (select   count(*)   from   Program1   where     sip=@sip   and   dip=@dip)   +     (select   count(*)     from   Program2   where     sip=@sip   and   dip=@dip);
    select   @Zfsbs   =   (sum(a.trigger_times)+sum(b.repeat)),   @Zfssjl   =   sum(b.traffic)   from   Program1   a,   Program2   b   where   a.sip=@sip   or   b.sip=@sip;
    select   @Zjsbs   =   (sum(a.trigger_times)+sum(b.repeat)),   @Zjssjl   =   sum(b.traffic)   from   Program1   a,   Program2   b   where   a.dip=@dip   or   b.dip=@dip;
    select   @Fsbs   =     (sum(a.trigger_times)+sum(b.repeat)),     @Fssjl   =   sum(b.traffic)     from   Program1   a,   Program2   b   where   (a.sip=@sip   and   a.dip=@dip)   or   (b.sip=@sip   and   b.dip=@dip);
end
GO

------解决方案--------------------
@Zgjcs = select (select count(*) from Program1 where sip=@sip ) + (select count(*) from Program2 where sip=@sip);

是不是应该是

select @Zgjcs=(select count(*) from Program1 where sip=@sip ) + (select count(*) from Program2 where sip=@sip);
------解决方案--------------------
CREATE proc getInfo
@sip varchar(50), /*传入参数*/
@dip varchar(50), /*传入参数*/
@Zgjcs int output,
@Zbgjcs int output,
@Gjcs int output,
@Zfsbs int output,
@Zfssjl int output,
@Zjsbs int output,
@Zjssjl int output,
@Fsbs int output,
@Fssjl int output
as
begin
set @Zgjcs = (select count(*) from Program1 where sip=@sip ) + (select count(*) from Program2 where sip=@sip)
set @Zbgjcs = (select count(*) from Program1 where dip=@dip) + (select count(*) from Program2 where dip=@dip)
set @Gjcs = (select count(*) from Program1 where sip=@sip and dip=@dip) + (select count(*) from Program2 where sip=@sip and dip=@dip)
select @Zfsbs = (sum(a.trigger_times)+sum(b.repeat)), @Zfssjl = sum(b.traffic) from Program1 a, Program2 b where a.sip=@sip or b.sip=@sip
select @Zjsbs = (sum(a.trigger_times)+sum(b.repeat)), @Zjssjl = sum(b.traffic) from Program1 a, Program2 b where a.dip=@dip or b.dip=@dip
select @Fsbs = (sum(a.trigger_times)+sum(b.repeat)), @Fssjl = sum(b.traffic) from Program1 a, Program2 b where (a.sip=@sip and a.dip=@dip) or (b.sip=@sip and b.dip=@dip)
end
GO
这样试试