以下是全部程序:
SQL2000Server中的存储过程:
---------------------------------------------------------------------------
create procedure "Ten Most Expensive Products" AS
SET ROWCOUNT 10
SELECT Products.ProductName AS TenMostExpensiveProducts, Products.UnitPrice
FROM Products
ORDER BY Products.UnitPrice DESCGO
---------------------------------------------------------------------------dephi7中的程序:
-----------------------------------------------------------
procedure TfrmMain.BitBtn1Click(Sender: TObject);
begin
  CreateDataSet;
  dmDemo.spMostExpensiveProducts.Active:=true;//spMostExpensiveProducts是TSQLStoredProc控件
  DoProcessSPData;
end;procedure TfrmMain.CreateDataSet;
var
  Defs : TFieldDefs;
  aField : TFieldDef;
  anIndex : TIndexDef;
begin
  Defs := cdsData.FieldDefs;
  aField := Defs.AddFieldDef;
  aField.DataType := ftString;
  aField.Size := 40;
  aField.Name := '产品名称';
  aField := Defs.AddFieldDef;
  aField.DataType := ftCurrency;
  aField.Name := '价格';
  anIndex := cdsData.IndexDefs.AddIndexDef;
  anIndex.Fields := '产品名称';
  anIndex.Name := 'pnIndex';
  cdsData.CreateDataSet;
end;procedure TfrmMain.DoProcessSPData;
begin
  try
    cdsData.DisableControls;
    while (not dmDemo.spMostExpensiveProducts.Eof) do
      begin
        cdsData.Insert;
        cdsData.FieldByName('产品名称').Value :=
                dmDemo.spMostExpensiveProducts.Fields[0].AsString;
        cdsData.FieldByName('价格').Value :=
                dmDemo.spMostExpensiveProducts.Fields[1].AsCurrency;
        cdsData.Post;
        dmDemo.spMostExpensiveProducts.Next;
      end;
  finally
    cdsData.EnableControls;
  end;
end;
------------------------------------------------------------------

解决方案 »

  1.   

    在SQL Server下调试好了存储过程,然后再在DELPHI调用。你的这个存储过程完全可以用SQL 语句来做到,不必用存储过程。
      

  2.   

    你用的是BDE控件吧
    你把storedprocname这个属性值:改为你的存储过程名,后面有一个";1"删掉,你再试试
      

  3.   

    我建议你用ADO控件,可以用SQL 语句来实现功能,这个相对来说简单一些的。
      

  4.   

    你好!我用的是dbExpress面板中的TSQLStoredProc控件,就是用它执行SQL Server的存储过程。
      

  5.   

    storedprocname属性值中的存储过程名后面没有";1"。