• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

调用存储过程【Delphi版】

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

A)返回结果为参数

  var
  Cn:TAdoConnection;
  Sp:TAdoStoredProc;
  recordCount:string;
    begin
  Cn := TAdoConnection.Create(nil);
  try
Cn.ConnectionString := [数据库连接字符串];
Cn.LoginPrompt := False;
Cn.KeepConnection := True;
Cn.ConnectionTimeout:=2;
try
Cn.Open;
Sp := TAdoStoredProc.Create(nil);
try
Sp.Connection := Cn;
Sp.Close;
Sp.ProcedureName :='getStudentAmount';
Sp.Parameters.Refresh;//参数的初始化要放在refresh之后
Sp.Parameters.ParamByName('@recordCount').Value:=0;//存储过程中每一个参数都要
Sp.ExecProc; //初始化,包括“返回参数”
recordCount:= inttostr(Sp.Parameters.ParamByName('@recordCount').Value);
finally
Sp.Free;
end;
except
on E:EoleException do
begin
ShowMessage('数据库连接失败,请检查连接');
end;
end;
finally
Cn.Free;
end;
  end;

B)返回结果为数据集

 1)单个数据集

var
Cn:TAdoConnection;
Sp:TAdoStoredProc;
nameFieldString:string;
begin
Cn := TAdoConnection.Create(nil);
Sp := TAdoStoredProc.Create(nil);
try
Cn.ConnectionString := [数据库连接字符串];
Cn.LoginPrompt := False;
Cn.KeepConnection := True;
Cn.ConnectionTimeout:=2;
try
Cn.Open;
Sp.Connection := Cn;
Sp.Close;
Sp.ProcedureName :='queryAllStudentInfo';
Sp.Parameters.Refresh;
Sp.Active:=True;//当返回结果是数据集时,一定要激活,但是“有参数时”必须放在参数初始化之后
Sp.open;//返回的是参数时只能用ExecProc,返回的是数据集时用Open,返回的既有参数又有数据集合也用Open
whilenot Sp.Eof do
begin
nameFieldString:=Sp.FieldByName('SName').AsString;
nameFieldString:=Trim(nameFieldString);
Sp.Next;
end;
except
on E:EoleException do
begin
ShowMessage('数据库连接失败,请检查连接');
end;
end;
finally
Sp.Free;
Cn.Free;
end;
end

 2)多个数据集

var
Cn:TAdoConnection;
Sp:TAdoStoredProc;
AdoQuery:TAdoQuery;
nameFieldString:
string;

aintf:_Recordset;
RecordsAffected:OleVariant;
begin
Cn :
= TAdoConnection.Create(nil);
try
Cn.ConnectionString :
=MainForm.DatabaseConnStr;
Cn.LoginPrompt :
= False;
Cn.KeepConnection :
= True;
Cn.ConnectionTimeout:
=2;
try
Cn.Open;
Sp :
= TAdoStoredProc.Create(nil);
AdoQuery:
=TAdoQuery.Create(nil);
try
Sp.Connection :
= Cn;
Sp.Close;
Sp.ProcedureName :
='CIB_GetCheckAccountFileInfo';
Sp.Active:
=True;//当返回结果是数据集时,一定要激活
Sp.Parameters.Refresh;

           Sp.Active:
=True;//当返回结果是数据集时,一定要激活,但是“有参数时”必须放在参数初始化之后

Sp.open;
//返回的是参数时只能用ExecProc,返回的是数据集时用Open,返回的既有参数又有数据集合也用Open

aintf:
=Sp.Recordset;
AdoQuery.Recordset:
=aintf;
whilenot AdoQuery.Eof do
begin
nameFieldString:
=AdoQuery.FieldByName('市场应用代码').AsString;
nameFieldString:
=Trim(nameFieldString);
showmessage(
'市场应用代码为:'+nameFieldString);
AdoQuery.Next;
end;

aintf:
=aintf.NextRecordset(RecordsAffected);
AdoQuery.Recordset:
=aintf;
whilenot AdoQuery.EOF do
begin
nameFieldString:
=AdoQuery.FieldByName('市场帐号').AsString;
nameFieldString:
=Trim(nameFieldString);
showmessage(
'市场帐号为:'+nameFieldString);
AdoQuery.Next;
end;
finally
AdoQuery.Free;
Sp.Free;
end;
except
on E:EoleException
do
begin
ShowMessage(
'数据库连接失败,请检查连接');
end;
end;
finally
Cn.Free;
end;
end;

 

 

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
MATLAB图像处理学习笔记——维纳滤波复原发布时间:2022-07-18
下一篇:
Matlab的拟合工具箱的误差参数说明发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap