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

帮忙看看存储,及其调用,写的对不对???
alter   proc   sp_statistic
@comseq   int,--公司ID
@total_act   int=0   output,
@total_contact   int=0   output,
@total_oppty   int=0   output
as
declare   @COUNTOPP   nvarchar(10),
@countcon   nvarchar(10),
@countact   nvarchar(10),
@id1     nvarchar(100)
select   @id1=cast(@comseq   as   nvarchar(10))
set   @COUNTOPP=N 'select   @a1=count(1)   from   oppty$   where   comseq=   '+@id1
      exec   sp_executesql   @COUNTOPP   ,N '@a1   int   output ',@total_oppty   output  

  set   @countcon= 'select   @a2=count(1)   from   conmas$   where   comseq=   '+@id1
  exec   sp_executesql   @countcon   ,N '@a2   int   output ',@total_contact   output

set   @countact=N 'select   @a3=count(distinct   comseq   )   from   actrd$   where   comseq=   '+@id1
exec   sp_executesql   @countact   ,N '@a3   int   output ',@total_act   output
--调用是不是这样子的???
declare   @total_act   int,
@total_contact   int,
@total_oppty   int
exec   sp_statistic   23,@total_act   output,
@total_contact     output,
@total_oppty     output
select   @total_act     as   aaa
select   @total_contact   as   bbb
select   @total_oppty   as   ccc
执行后结果都是   NULL,

------解决方案--------------------
declare @COUNTOPP nvarchar(10),
@countcon nvarchar(10),
@countact nvarchar(10),
@id1 nvarchar(100)
-- 字符串,太段,10个字符怎么放的下一条SELECT语句

该成
declare @COUNTOPP nvarchar(4000),
@countcon nvarchar(4000),
@countact nvarchar(4000),
@id1 nvarchar(100)