`
luogen33
  • 浏览: 83771 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

perl操作oracle数据库

 
阅读更多
到:http://search.cpan.org/~timb/DBI-1.613/lib/DBI/DBD/SqlEngine.pm
下载DBI-1.6
和到:http://search.cpan.org/~pythian/DBD-Oracle-1.21/
下载DBD-Oracle-1.21

[root@localhost ~]# tar zxvf DBI-1.613.tar.gz
[root@localhost ~]# cd DBI-1.613
[root@localhost DBI-1.613]# perl Makefile.PL
[root@localhost DBI-1.613]#make
[root@localhost DBI-1.613]#make install

[root@localhost ~]#cd
[root@localhost ~]# tar zxvf DBD-Oracle-1.21.tar.gz
[root@localhost ~]# cd DBD-Oracle-1.21
在oracle的HOME目录下的.bash_profile最后加上export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/jdbc/lib:$LD_LIBRARY_PATH

[root@localhost DBD-Oracle-1.21]# . /home/db/oracle/.bash_profile
[root@localhost DBD-Oracle-1.21]# perl Makefile.PL
[root@localhost DBD-Oracle-1.21]#make
[root@localhost DBD-Oracle-1.21]#make install

若报如下错误:
nstall_driver(Oracle) failed: Can't load '/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBD/Oracle/Oracle.so' for mod
ule DBD::Oracle:
解决方案如下:
# echo /u01/app/oracle/product/10.2.0/db_1/lib >> /etc/ld.so.conf
# echo /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBD/Oracle >> /etc/ld.so.conf
# ldconfig
# ldd /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBD/Oracle/Oracle.so
查看lib包的相关性是否正常

我的测试数据如下:
建表与插入数据
create table BOOKS
(
  ISBN           VARCHAR2(13) not null,
  TITLE          VARCHAR2(200),
  SUMMARY        VARCHAR2(2000),
  AUTHOR         VARCHAR2(200),
  DATE_PUBLISHED DATE,
  PAGE_COUNT     NUMBER
);
insert into books (ISBN, TITLE, SUMMARY, AUTHOR, DATE_PUBLISHED, PAGE_COUNT)
values ('0-596-00977-1', 'Oracle PL/SQL Programming', 'For the past ten years,  Oracle PL/SQL Programming has been the bestselling book on PL/SQL', 'Steven Feuerstein', to_date('01-09-2010 17:45:07', 'dd-mm-yyyy hh24:mi:ss'), 700);

insert into books (ISBN, TITLE, SUMMARY, AUTHOR, DATE_PUBLISHED, PAGE_COUNT)
values ('0-13-238182-6', 'Perl by Example', 'Perl by Example, Fourth Edition, is the easiest, most hands-on way to learn Perl.', 'Ellie Quigley', to_date('01-09-2010 18:29:56', 'dd-mm-yyyy hh24:mi:ss'), 600);
commit;

使用到的函数:
CREATE OR REPLACE FUNCTION booktitle (isbn_in IN VARCHAR2)
   RETURN VARCHAR2
IS
   l_isbn books.title%TYPE;
   CURSOR icur IS SELECT title FROM books WHERE isbn = isbn_in;
BEGIN
   OPEN icur;
   FETCH icur INTO l_isbn;
   CLOSE icur;
   RETURN l_isbn;
END;
/

callbook.pl的 perl脚本如下:
#!/usr/bin/perl

use strict;
use DBI qw(:sql_types);

# either make the connection or DIE
my $dbh = DBI->connect(
    'dbi:Oracle:db',
    'scott',
    'tiger',
    {
        RaiseError => 1,
        AutoCommit => 0
    }
) || die "Database connection not made: $DBI::errstr";

my $retval;

# make parse call to oracle, get statement handle
eval {
    my $func = $dbh->prepare(q{
        BEGIN
            :retval := booktitle(isbn_in => :bind1);
        END;
    });

# bind the parameters and execute
    $func->bind_param(":bind1", "0-13-238182-6");
    $func->bind_param_inout(":retval", \$retval, SQL_VARCHAR);
    $func->execute;

};

if( $@ ) {
    warn "Execution of stored procedure failed: $DBI::errstr\n";
    $dbh->rollback;
} else {
   print "Execution of stored procedure returned: $retval\n";
}
# don't forget to disconnect
$dbh->disconnect;

其中:   
    'dbi:Oracle:db',
    'scott',
    'tiger',
的db为数据库SID,scott和tiger为用户名和密码

启动数据库和监听器后,在oracle用户下执行perl脚本:
$perl callbook.pl
分享到:
评论

相关推荐

    oracle数据库同步perl脚本示例

    oracle数据库同步perl脚本示例 其中有2个文件,一个是 perl同步脚本,另一个是存储过程; 大致思路是:perl脚本从数据库A同步数据至库B的临时表中,再通过存储过程将库B中的临时数据过滤导入正式数据当中。

    Perl for Oracle DBAs

    5. **日志管理和错误处理**:Perl提供了良好的日志记录机制,DBAs可以方便地记录数据库操作的日志,以便追踪问题和优化过程。同时,Perl的错误处理机制可以帮助识别和修复脚本中的错误。 6. **数据库性能调优**:...

    NT下Perl访问Oracle所需模块.rar

    在Windows NT操作系统环境下,使用Perl语言来访问Oracle数据库是一项常见的任务。这个压缩包"NT下Perl访问Oracle所需模块.rar"包含了一系列必要的Perl模块,这些模块是实现Perl与Oracle交互的基础。下面将详细介绍...

    perl oracle dbd zip

    DBD::Oracle是Perl的一个数据库驱动模块,它允许Perl脚本连接到Oracle数据库并执行SQL查询和其他数据库操作。 首先,Perl是一种强大的文本处理和脚本编程语言,广泛用于系统管理、网络编程和Web开发等领域。它的...

    unix和linux下的oracle数据库管理

    最后,书中可能还会涵盖一些自动化和脚本编写技巧,如使用shell脚本来自动化日常任务,或者利用Perl、Python等语言进行更复杂的数据库操作。这将帮助DBA提高工作效率,减少人为错误。 总的来说,“Unix和Linux下的...

    Oracle数据库正则表达式

    从 Oracle 10g 开始,Oracle 内建了符合 IEEE POSIX (Portable Operating System for Unix)标准的正则表达式,同时也支持 Perl 的正则表达式规则。 正则表达式的组成 ----------------- 正则表达式由一个或多个...

    Unix和Linux下的Oracle数据库管

    在IT领域,Unix和Linux操作系统是企业级Oracle数据库管理的常用平台。Oracle数据库因其稳定性、高性能和可扩展性,被广泛应用于大型企业及关键业务系统。本篇文章将深入探讨在Unix(包括AIX)和Linux环境下Oracle...

    Perl操作mysql数据库的方法.doc

    需要注意的是,虽然DBI模块为Perl提供了强大的数据库操作能力,但使用时还需注意数据库的安全性问题。例如,在编写代码时应避免SQL注入漏洞,确保传入的参数值经过适当的验证和转义处理。 此外,操作数据库时应考虑...

    centos上安装oracle数据库

    本文档基于腾讯云服务器环境,详细介绍了从操作系统配置到Oracle数据库安装的全过程。 #### 二、操作系统配置 1. **去除不必要的组件** - 在“基本系统”中移除Java和Perl。 - 在“应用程序”中选择Emacs和互联网...

    perl DBD-Oracle-1.22

    Perl DBD-Oracle-1.22 是一个Perl编程语言中的数据库驱动模块,它使得Perl程序能够与Oracle数据库进行交互。这个模块是DBI(Database Independent Interface)的一部分,DBI是Perl中广泛使用的数据库接口标准,它...

    Oracle_RDA数据库诊断调优工具配置使用手册

    Oracle RDA 数据库诊断调优工具配置使用手册 Oracle RDA 是一款功能强大的数据库诊断调优工具,旨在帮助数据库管理员快速诊断和优化 Oracle 数据库的性能。下面是 Oracle RDA 数据库诊断调优工具的配置使用手册。 ...

    oracle驱动DBD-Oracle-1.27

    这个版本的DBD(Database Driver)专为Oracle数据库设计,允许开发人员使用Perl语言编写脚本来执行查询、更新和其他数据库操作。在本文中,我们将深入探讨DBD-Oracle的特性、安装过程、使用方法以及其在实际应用中的...

    Oracle培训用Perl编程教程

    Oracle培训中的Perl编程教程是一门深入浅出的课程,旨在帮助IT专业人士掌握使用Perl语言在Oracle数据库环境中进行高效开发和管理的技能。Perl是一种强大的文本处理语言,特别适合于处理和解析大量的数据,因此在...

    Oracle数据库的基础教程

    Oracle数据库是全球知名的信息管理软件,由Oracle公司开发并提供,该公司是世界上最大的数据库管理系统供应商之一,也是第二大独立软件公司。Oracle自1989年进入中国市场以来,已在中国的多个城市设立办事处,并在...

    Oracle至PostgreSQL数据库迁移方案.pptx

    它连接Oracle数据库,自动扫描并提取其结构或数据,然后生成可以加载到PostgreSQL数据库中的SQL脚本。 二、Ora2PG功能 Ora2PG可以支持大多数SQL的转换,但某些情况下仍需要人工校正语法,使其兼容PostgreSQL。其...

    perl 连接数据库所需包

    例如,DBD::mysql是用于连接MySQL数据库的DBD驱动,DBD::Oracle用于Oracle数据库,DBD::SQLite用于SQLite数据库。在本案例中,"dbd unixodbc"提到了ODBC(Open Database Connectivity),这是另一种数据库连接标准,...

Global site tag (gtag.js) - Google Analytics