网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
Delphi开发用DOA运行存储过程
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式
变量下限从零开始。

  应用实例

  以下是笔者运用上述第二种方法在电信综合统计管理系统中调用加工审核存储过程的一段源代码:

  create or replace package pk_sh is

  type t_object is table of varchar2(15) index by binary_integer;

  type t_formula is table of number index by binary_integer;

  procedure sp_audit(sh_time in varchar2,sh_dx in t_object,sh_gs in t_formula);

  end pk_sh;

  我们首先在服务器端创建包pk_sh,包中定义了两种PL/SQL表,其中t_object存储审核对象,t_formula存储审核公式ID,存储过程sp_audit根据传递的参数(时间、对象、公式)对后台数据进行加工审核。

  客户端用Delphi编写,即通过DOA访问sp_audit,具体源代码如下:

  Var

   OracleSession1: TOracleSession;

   OracleQuery1: TOracleQuery;

  Begin

   //连接数据库

   OracleSession1:= TOracleSession.Create(nil);

   OracleSession1.LogonDatabase := ''chicago'';

   OracleSession1.LogonUsername := ''scott'';

   OracleSession1.LogonPassword := ''tiger'';

   OracleSession1.Connected:= True;

   OracleQuery := TOracleQuery.Create(nil);

   OracleQuery1.Session := OracleSession1;

   //创建数组并赋值

   sh_dx:=VarArrayCreate([0, LV_object.Items.Count -1], varVariant);

   for i:=0 to LV_object.Items.Count -1 do

   begin

   sh_dx[i] :=LV_object.Items[i].caption;

   end;

   sh_gs:=VarArrayCreate([0, LV_formula.Items.Count -1], varVariant);

   for i:=0 to LV_formula.Items.Count -1 do

   begin

   sh_gs[i] :=strtoint(LV_formula.Items[i].caption);

   end;

   sql_str :=''pk_sh.sp_audit(:sh_time,:sh_dx,:sh_gs);'';

   with OracleQuery1 do

   begin

   //设置SQL属性

   Clear;

   SQL.Add(''begin'');

   SQL.Add('' '' + sql_str );

  SQL.Add(''end;'');

  //定义参数

   DeleteVariables;

   DeclareVariable(''sh_time'', otString);

   DeclareVariable(''sh_dx'', otString);

   DeclareVariable(''sh_gs'', otInteger);

   DimPLSQLTable(''sh_dx'', 2000, 15);

  DimPLSQLTable(''sh_gs'', 500, 0);

  //参数赋值

   SetVariable('': sh_time '', sh_time);

   SetVariable('':sh_dx'', sh_dx);

  SetVariable('':sh_gs'', sh_gs);

  //执行存储过程

   Execute;

   Free;

   end;

   OracleSession1.Connected:= False;

   OracleSession1.Free;

  End;

  以上源代码采用Delphi 5、Oracle 8开发,在Windows 98/Windows2000系统平台下调试通过。

  通过以上分析可知,利用BDE访问Oracle,由于它不支持PL/SQL表,参数只能分行传递,需反复多次调用存储过程,而用DOA则使问题圆满解决。此外,将TOracleQuery的Threaded属性设置为True,就可简单地编写多线程应用程序,而将Debug属性设置为True,可在运行时显示SQL语句和变量值,以方便调试。

  • 下一篇资讯: Delphi中对象解除技巧
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号