Delphi 调用SQL Server 2008存储过程

来源:互联网 发布:lamp兄弟连java 编辑:程序博客网 时间:2024/05/30 22:51

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

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


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

CREATE PROCEDURE [dbo].[GetBudgetAmt] -- Add the parameters for the stored procedure here@DeptID nvarchar(4) = '7120',@FeeDate int = 201301,@FeeCode nvarchar(8) ='31301' ,@FeeType nvarchar(1) = '2',@BAType nvarchar(1)='1',@FeeAmt float output ASBEGIN-- SET NOCOUNT ON added to prevent extra result sets from-- interfering with SELECT statements.SET NOCOUNT ON;    -- Insert statements for procedure hereSELECT @FeeAmt = FeeAmt from BA_FeeDetail where (FeeCode = @FeeCode and    FeeType = @FeeType and  FeeDate = @FeeDate andFeeDeptID = @DeptID and  BAType = @BAType )Return @FeeAmtEND


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

procedure TForm1.btn1Click(Sender: TObject);VarBudgetAmt:Single;beginwith ADOSP1 dobeginProcedureName :='GetBudgetAmt';Parameters.Refresh;//必须有本语句,刷新参数Parameters.ParamByName('@DeptID').Value:=EdtDept.Text;Parameters.ParamByName('@FeeDate').Value:=EdtFeeDate.Text;Parameters.ParamByName('@FeeCode').Value:=EdtFeeCode.Text;Parameters.ParamByName('@FeeType').Value:=EdtFeeType.Text;Parameters.ParamByName('@BAType').Value:=EdtBAType.Text;Parameters.ParamByName('@FeeAmt').Value:=0.00;ExecProc;BudgetAmt:=Parameters.ParamByName('@FeeAmt').Value;edtFeeAmt.Text:=Format('%.2f',[BudgetAmt]);end;end;


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