Delphi 调用SQL Server 2008存储过程

1.表结构如下(预算数据明细表):

[sql][/sql] view plaincopy

  1. CREATE TABLE [dbo].[BA_FeeDetail](
  2.     [ID] [int] IDENTITY(1,1) NOT NULL,
  3.     [FeeDeptID] [nvarchar](4) NULL,
  4.     [FeeDate] [int] NULL,
  5.     [FeeCode] [nvarchar](10) NULL,
  6.     [FeeType] [nvarchar](1) NULL,
  7.     [BAType] [nvarchar](1) NULL,
  8.     [FeeAmt] [float] NULL
  9. ) ON [PRIMARY]

2.创建存储过程(用于取得某部门某次预算的某月某费目的预算额)

[sql][/sql] view plaincopy

  1. CREATE PROCEDURE [dbo].[GetBudgetAmt]
  2.     — Add the parameters for the stored procedure here
  3.     @DeptID nvarchar(4) = ‘7120’,
  4.     @FeeDate int = 201301,
  5.     @FeeCode nvarchar(8) =’31301′ ,
  6.     @FeeType nvarchar(1) = ‘2’,
  7.     @BAType nvarchar(1)=’1′,
  8.     @FeeAmt float output
  9.     AS
  10. BEGIN
  11.     — SET NOCOUNT ON added to prevent extra result sets from
  12.     — interfering with SELECT statements.
  13.     SET NOCOUNT ON;
  14.     — Insert statements for procedure here
  15.     SELECT @FeeAmt = FeeAmt from BA_FeeDetail where (
  16.                         FeeCode = @FeeCode and
  17.                         FeeType = @FeeType and
  18.                         FeeDate = @FeeDate and
  19.                         FeeDeptID = @DeptID and
  20.                         BAType = @BAType
  21.                      )
  22.     Return @FeeAmt
  23. END

3.delphi 程序中调用(使用ADOConnect 和 ADOStoreProc )

[delphi][/delphi] view plaincopy

  1. procedure TForm1.btn1Click(Sender: TObject);
  2. Var
  3.     BudgetAmt:Single;
  4. begin
  5.     with ADOSP1 do
  6.     begin
  7.         ProcedureName :=’GetBudgetAmt’;
  8.         Parameters.Refresh;             //必须有本语句,刷新参数
  9.         Parameters.ParamByName(‘@DeptID’).Value:=EdtDept.Text;
  10.         Parameters.ParamByName(‘@FeeDate’).Value:=EdtFeeDate.Text;
  11.         Parameters.ParamByName(‘@FeeCode’).Value:=EdtFeeCode.Text;
  12.         Parameters.ParamByName(‘@FeeType’).Value:=EdtFeeType.Text;
  13.         Parameters.ParamByName(‘@BAType’).Value:=EdtBAType.Text;
  14.         Parameters.ParamByName(‘@FeeAmt’).Value:=0.00;
  15.         ExecProc;
  16.         BudgetAmt:=Parameters.ParamByName(‘@FeeAmt’).Value;
  17.         edtFeeAmt.Text:=Format(‘%.2f’,[BudgetAmt]);
  18.     end;
  19. end;

测试通过(测试环境 Win7 + SQL Server 2008 + Delphi XE,时间 2013/07/14 7:00AM)

标签