一个存储过程用Adoquery和adostoredproc都没有返回结果集.解决思路

一个存储过程用Adoquery和adostoredproc都没有返回结果集.
SQL code

CREATE   PROCEDURE pu_otest(
@bppf varchar(49),
@khjq datetime,
@a int
)
 AS
declare @jcrq datetime
    select @jcrq=结存日期 from stockpile where 部品品番=@bppf and convert(char(7),结存日期,121)=convert(char(7),dateadd(mm,-1,getdate()),121)
    if (@jcrq is null)
    begin
        set @jcrq=dateadd(mm,datediff(mm,-1,dateadd(mm,-1,getdate())),-1) --上个月最后一天.
    end

 if @a=1
 begin
    select  * from composing where 产品编号 in(select 产品编号 from destine
                            where 交货日期>=@jcrq and 交货日期<=@khjq)  and 部品品番=@bppf --计算这段时间内各产品在构成中用到此部品的全部数量.

 end
 if @a=2 
 begin
     select * from destine 
                         where 产品编号 in(select 产品编号 from composing where 部品品番=@bppf)
                         and  ((交货日期>=@jcrq) and (交货日期<=@khjq)) --计算这段时间内用的此部品的预定的所有数量.
 end
GO


Delphi(Pascal) code

    with sp1 do
    begin
      Close;
      Prepared:=false;
      ProcedureName:='pu_otest;1';
      Parameters.Refresh;
      Parameters.ParamByName('@bppf').Value:=Trim(cxLookupComboBox1.EditText);
      Parameters.ParamByName('@khjq').Value:=cxDateEdit1.Date;
      Parameters.ParamByName('@a').Value:=1;
      Open;
    end;

      with qry3 do
      begin
        close;
        sql.Clear;
        SQL.Add('exec pu_otest :a,:b,:c,:d output');
        Parameters.items[0].Value:=Trim(cxLookupComboBox1.EditText);
        Parameters.items[1].Value:=cxDateEdit1.Date;
        Parameters.items[2].Value:=1;
        Prepared:=True;
        open;;
      end;





请大大们帮我看一下,我错在那里了.

------解决方案--------------------
很久没写存储过程了。其中参数:d output,在SQL SERVER里面没有看到有output参数的定义。