There is an ongoing outage on the primary CPAN mirror. It is possible to work around the issue by using MetaCPAN as a mirror.

NAME

PDK::DBI::Oracle - Oracle 数据库操作工具类

SYNOPSIS

use PDK::DBI::Oracle;

my $db = PDK::DBI::Oracle->new(
    host     => '127.0.0.1',
    port     => 1521,
    sid      => 'ORCL',
    user     => 'scott',
    password => 'tiger',
);

# 执行查询
my $rows = $db->select(
    table  => 'EMP',
    column => ['EMPNO', 'ENAME']
)->all;

# 插入数据(自动提交)
eval {
    $db->insert(
        table  => 'EMP',
        param  => { EMPNO => 9999, ENAME => 'TEST' }
    );
};
if ($@) {
    warn "数据库操作失败: $@";
}

DESCRIPTION

该模块基于 DBIx::Custom,对 Oracle 数据库提供了更高层次的封装。 支持事务自动提交/回滚、批量执行、自动构建 DSN 等功能。

ATTRIBUTES

host

字符串类型,Oracle 服务器主机名。

port

字符串或整数类型,Oracle 监听端口,默认 1521。

sid

字符串类型,Oracle 数据库实例名。

dsn

数据库 DSN。若未显式指定,将由 hostportsid 自动拼接。

user

字符串类型,数据库用户名。

password

字符串类型,数据库密码。

option

哈希引用,数据库连接选项。 默认值为:

{
    AutoCommit => 0,
    RaiseError => 1,
    PrintError => 0
}

METHODS

select / insert / update / delete / execute

继承自 DBIx::Custom 的常用数据库操作方法。

batchExecute(\@params, $sql)

批量执行 SQL 语句,内部调用 "_rawExecute"。 每 5000 条自动提交一次事务,适合大批量数据处理。

_rawExecute(\@params, $sql)

底层批量执行方法。 逐条执行 @params 中的参数绑定 SQL,支持自动分批提交。

clone

克隆当前数据库对象,生成新的连接实例。

disconnect

断开当前数据库连接。

reconnect

重建数据库连接。

ERROR HANDLING

  • 所有事务型方法(insert、update、delete、execute、batchExecute)出错时会自动回滚,并通过 Carp::confess 抛出异常。

  • rollback 失败时,会额外输出 DBI 错误信息。

DSN CONSTRUCTION

若未显式指定 dsn,则根据以下规则自动拼接:

dbi:Oracle:host=$host;sid=$sid;port=$port

COMPATIBILITY

当环境变量 LANG 存在时,会设置以下 Oracle 环境变量以提高兼容性:

NLS_CURRENCY       = '*'
NLS_DUAL_CURRENCY  = '*'

AUTHOR

WENWU YAN <968828@gmail.com>

LICENSE AND COPYRIGHT

This software is licensed under the same terms as Perl itself.