以下带买在Sybase中通过
      ......
      StoredProc.Parameters.CreateParameter('',ftString,pdInput,Length(Head),Head);
      StoredProc.Open;      TempQuery.Recordset := StoredProc.Recordset;
      while ADataSet >= 0 do
      begin
         if ADataSet = 0 then  // 第一个结果集
          begin
                FRecord := TempQuery.Fields[0].Value;
               Result := True;
         end;         if ADataSet >0 then  // 第二个结果集
          begin
              for i := 0 to TempQuery.RecordCount - 1 do
              begin
                 FieldValue := '';
                 for j := 0 to TempQuery.FieldCount - 1 do
                 begin
                     FieldValue := FieldValue + String(TempQuery.Fields[j].Value) + ColFlag;
                 end;
                 TempQuery.Next;
                 RecValue := RecValue + FieldValue + RecFlag;
              end;
              NRecord := RecValue;
            end;
         end;
         TempQuery.Recordset := StoredProc.NextRecordset(ADataSet);
      end;
上述代码在调用Sybase的有多个结果集返回的存储过程是可以的。但是调用SQL Server的时候始终只能返回一个结果集,在第一个结果集返回的时候ADataSet就等于-1了。问题一:SQL Server中是否和sybase有区别,该如何写。问题二:在调用Oracle的存储过程时是否能用上述写法还是必须这样写:TempQuery.Sql.Add(Call ProcName(?,?...) )。等待高手解决。