手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

通过Perl 编程访问DB2数据库

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
fetchrow 方法编写功能相同的 Perl 程式,如下所示:


清单 17. 从数据库中检索多个值


            $stmt = "SELECT name, phone from PT_ADDR_BOOK";

            $sth = $dbh->prepare($stmt);

            $sth->execute();

            print "NAME                          PHONE      \n";

            print "-------------------------     -----------\n";

            while (($name, $phone) = $sth->fetchrow())

            { print "$name  $phone\n"; }

            

我们能够从 实验 3 开始编写并执行一个 Perl 程式,他能够创建一个 DB2 表,向该表中插入一些数据,并返回插入该表中的行数。

调用存储过程

下面让我们来创建一个多个步骤的场景,从而周详了解一下如何从 Perl 程式中调用 DB2 的存储过程。首先,创建一个简单的存储过程 SP_GET_LOC,他从表 ORG 中返回某个给定部门的位置(步骤 1)。


清单 18. 步骤 1:创建存储过程


            create procedure sp_get_loc (in deptin int, out loc varchar(13))

            begin

            select location into loc from org where deptnumb = deptin;

            end  @

            

请注意,这个存储过程有一个输入参数和一个输出参数。当我们在 DB2 的命令行处理器(CLP)中运行这个过程时,他对部门 10 会返回位置 NEW YORK。


清单 19. 步骤 2:运行存储过程


            $db2 "call sp_get_loc(10,?)"

            Value of output parameters

            --------------------------

            Parameter Name  : LOC

            Parameter Value : New York

            Return Status = 0

            

下面让我们来编写一个简单的 Perl 程式来调用存储过程 SP_GET_LOC(步骤 3,请参看 清单 20)。我们的动态 SQL 语句实际上和在 DB2 CLP 中执行的语句相同,形式为 SP_GET_LOC(?,?),但是在 CLP 中是传递硬编码的 10(部门编号),在动态 SQL 语句中将使用一个参数标记。采用这种方法,就能够对 ORG 表的部门编号列的任何值查询位置了。

在构造 SQL 语句之后,剩下的步骤就和其他具备参数标记的动态语句完全相同了。能够使用 $sth = $dbh->prepare 方法进行准备。使用 $sth->bind_param 方法将部门编号绑定为输入参数,使用 $sth->bind_param_inout 方法将返回的位置绑定为输出参数,然后再执行动态 SQL 语句。

该程式如下:


清单 20. 步骤 3:调用存储过程


            #!/usr/bin/perl -w

            use DBI;

            use DBD::DB2::Constants;

            $dbh = DBI->connect("dbi:DB2:sample","","") or

            die "Can't connect to sample database: $DBI::errstr";

            # Prepare our call statement

            $sth = $dbh->prepare( "CALL SP_GET_LOC(?,?)" );

            # Bind input parameter for department number

            $sth->bind_param(1, 10);

            # Bind output parameter - location

            $sth->bind_param_inout (2, \$location, 13,     db2_param_type=>SQL_PARAM_OUTPUT});

            # Call the stored procedure

            $sth->execute();

            printf("Stored procedure returned location: %s\n", $location);

            $sth->finish();

            $dbh->disconnect;

            

假如执行这个程式,就会看到给定部门(本例中为 10)的 LOCATION:


清单 21. 步骤 4:执行调用 DB2 存储过程的 Perl 程式


            $perl test_call_sp.pl

            Stored Procedure returned location: New York

            

大对象的操作

使用 Perl 来处理文档比使用其他更复杂的语言(例如 C 或 Java®)都要简单。下面我们就会看到如何将数据直接从文档中导入 DB2 的大对象数据(LOB)列中。插入大对象数据的最有效的方法是,将这个文档直接绑定到 DB2 表中一个和 LOB 类型的列相关联的输入参数上。Perl 驱动程式能够直接从文档中读取数据,并将数据传递给数据库服务器。要将一个文档绑定到某个输入 LOB 参数上,能够在执行 INSERT 操作过程中使用

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!