Welcome

首页 / 软件开发 / Delphi / Delphi存储过程的调用方法

Delphi存储过程的调用方法2012-01-11 博客园 生的伟大活得憋屈网上对该问题的帖子很多,但是经常不是很全面,笔者在使用时也遇到了很多实际问题,比如参数不存在啊、类型没有引用啊等等。下面我尽量细致地来通过例子实现一下,如果还有不正确的地方,希望得到高手指点,

首先,我们使用一种简单的方式,即通过控件的方式来定义存储过程和数据源。

新建一个单元,命名为:DataMConn,在加入一个ADO单元下的ADOStoredProc,这里命名为ADOSPTempAbove ,再加入Data Access单元下的一个DataSource,这里命名为DataSourceAbove,设置DataSourceAbove的DataSet属性为ADOSPTempAbove,当然这个属性也可以在程序中指定。

下面,可以在另一个单元中添加一个DataGrid,这里的命名为dgAbove。下面的代码加了详细注释。

With DataMConn.ADOSPTempAbove do
begin
ProcedureName := "GetAbove"; //指定存储过程名称
Parameters.Clear; //清除原有参数
//以下创建了两个新的参数,关于如何传递表名做为参数请参我在 数据库 分类的高级应用中写的文章。
Parameters.CreateParameter("@tableName",ftString,pdinput,20,0);
Parameters.CreateParameter("@strDate",ftString,pdinput,20,0);
//以下为参数赋值
Parameters.ParamByName("@tableName").Value := tempTableName;
Parameters.ParamByName("@strDate").Value := strDate;
try
Open; //返回结果集用open,否则用EexcProc;
except
begin
ShowMessage("打开表错误");
Exit;
end;
end;
//如果没有在控件属性中设置DataSourceAbove的DataSet属性,可以在这里设置:
//DataSourceAbove.DatSet := DataMConn.ADOSPTempAbove
dgAbove.DataSource := DataMConn.DataSourceAbove;
end;