TClientDataSet.CommandText:=
      ' Declare @OutputData int '#13#10'Excute  StoredProc1  @OutputData Output'#13#10'Select @OutputData ';outputdate在存储过程中要定义为OUTPUT类型的参数.SELECT @outputdate 返回一个结果集,如同返回一个表一样,只有一个字段,一条记录.YES.如果存储过程最后一行是select语句(返回结果集),方可用OPEN打开.同时返回记录和参数.否则只返回参数.clientdataset.Parambyname('@time1').Value := now;
...
result := clientdataset.Parambyname('@get1').Value;

解决方案 »

  1.   

    但是这没有解决从客户端取得time1,time2参数呀,time1,time2是在客户端动态改变的
      

  2.   

    在客户端:
    var sl :TStringList;
    sl := TStringList.Create;
    sl.Add('declare @time1 datetime');
    sl.Add('declare @outputdata int');
    sl.add('select @time1 = ''' + FormatDateTime('yyyy-mm-dd',Now)+'''');
    sl.Add('exec proc_name @time1,@outputdata output');
    sl.Add('select @outputdata');
    ClientDataset.CommandText := sl.Text;
    sl.Free;
    ClientDataset.Open;
      

  3.   

    另:存储过程里的参数定义必须和传过去的参数一样.例如:
    create procedure [procname]
      @time1 datetime,
      @output int output
    as
    ...
      

  4.   

    风之舞谢谢你
    sl.Add('exec proc_name @time1,@outputdata output'); 是exec吗