Delphi调用存储过程

Posted 1点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi调用存储过程相关的知识,希望对你有一定的参考价值。

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
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here
SELECT @FeeAmt = FeeAmt from BA_FeeDetail where (
FeeCode = @FeeCode and
FeeType = @FeeType and
FeeDate = @FeeDate and
FeeDeptID = @DeptID and
BAType = @BAType
)

Return @FeeAmt
END

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

procedure TForm1.btn1Click(Sender: TObject);
Var
BudgetAmt:Single;
begin
with ADOSP1 do
begin
ProcedureName :=‘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;

以上是关于Delphi调用存储过程的主要内容,如果未能解决你的问题,请参考以下文章

delphi怎样在ADO里用ADOproc调用数据库sql server存储过程?,用ADODATASET或者ADOQUERY又怎样调用存储过程?

delphi客户端调用存储过程返回参数,请问怎么解决

那位大侠教教我。delphi怎么调用sql 还有就是直接调用sql的存储过程

delphi 三层架构如何调用oracle 存储过程,应该使用哪个部件,最好有实例

使用 FireDac 在 Delphi 中动态创建和调用存储过程的正确方法是啥?

Delphi调用存储过程