在AnySQL.net中搜索标签(Tags) 'DBI' 的结果:

让Perl DBI返回的记录按列存贮

    最新版本的Perl DBI接口定义了Array DML接口, 指将一个数组作为一个绑定变量, 这个在数据库的接口层上是早已经支持的了, 象Oracle Pro*C中早就支持命名用数组了. 但在实际使用中, 去发现一点不方便的地方. 通常Perl中返回结果集是按行排列的, 如下所示: {   ROW1  {col1, col2, col3, col4},   ROW2  {col1, col2, col3, col4},   .....   ROWn  {col1, col2, col3, col4} }     但实际上在绑定时, 是这样的: $sth->bind_param_array( COL1={row1, row2, ... rown}); $sth->bind_param_array( COL2={row1, row2,...

学习Perl DBI -- 以SYSDBA或SYSOPER连接到Oracle

    在连接9i或以上版本的Oracle数据库时, 必须指定SYSDBA或SYSOPER选项, 当你的Perl角本需要以SYS用户连接时, 如何指定呢? #!/usr/bin/perl -w # use DBI; # Get a database connection Handle. my $dbconn = DBI->connect("dbi:Oracle:",      '/','/', {ora_session_mode=>2}); ......     当ora_session_mode的值指定为2时表示以SYSDBA连接, 指定值为4时表示以SYSOPER来连接.     最近越来越发现Perl的好处, 以后将改用Perl来写些小角本, 并将源代码共享给大家....

学习Perl DBI -- 真正的Array DML支持

    在早期的DBD Oracle (1.18)以前, Array DML的接口是假的, 其实是一条一条地执行的, 而DBD Oracle的主要编写人员也受到了很多开发人员的质问. 在DBD-Oracle v1.19的更改列表中, 我看到了下面的几行: =head1 Changes in DBD-Oracle 1.18 (svn rev 6697)   Added support for native Oracle Array interface thanks Kristian Nielsen   Added suppot for LOB Locators from Jeffrey Klein.   Updated...

学习Perl DBI -- Array Insert/Update/Delete

    在DBI的较新版本和DBD的最新版本(如: DBD Oracle V1.19)中就支持了Array DML操作, 这样可以大幅提高应用程序的性能, 在Perl中我们可以通过bind_param_array和execute_array来实现, 如下代码所示: my (@rowstats, $rv); $dbh->{AutoCommit} = 0; my @col1 = (.....); my @col2 = (.....); my $sth = $dbconn->prepare(     "INSERT INTO T_PERLARRAY VALUES (?, ?)"); $sth->bind_param_array(1, \@col1); $sth->bind_param_array(2, \@col2); $rv =...

学习Perl DBI -- 语句的高级属性

    1, NUM_OF_FIELDS -- 查询返回的字段个数     在执行之后, 就可以用这个属性获得SELECT语句返回的字段数了, 如下所示: $sth->execute(); print("Number of fields: $sth->{NUM_OF_FIELDS}\n");     2, NAME, NAME_UC, NAME_LC -- 取得字段名     这些属性是一个数组, NAME返回的是大小写混合的列名, NAME_UC是大写, NAME_LC是小写. 使用方法如下所示: $sth = $dbh->prepare( "SELECT * FROM megaliths" ); $sth->execute();...

学习Perl DBI -- 数据库连接的高级属性

    1, AutoCommit -- 是否自动提交     一般来说自动提交不利于应用程序的性能. $dbh->{AutoCommit} = 1; print "AutoCommit: $dbh->{AutoCommit}\n";     2, ChopBlanks -- 取舍CHAR类型后面的空格     当你从数据库中取CHAR类型的值时, 你可以指定要不要带后面的空格, 在数据库中CHAR是定长的, 长足不足时, 后面以空格补充, 但你在写应用程序时, 可能并不想要后面的空格, 这时你可以将这个选项设为1. $dbh->{ChopBlanks} = 1; print "ChopBlanks: $dbh->{ChopBlanks}\n";     3,...

学习Perl DBI -- 处理返回记录(Fetch)

    在Perl中, 如果你的记录确保只有一条记录被返回, 则可以用以下的更简单的方法, 而不需要经过Prepare-Bind-Execute-Fetch四个阶段, 如下所示: my ($iniext, $nxtext) = $dbh->selectrow_array (    "SELECT INITITAL_EXTENT, NEXT_EXTENT FROM DBA_TABLESPACES        WHERE TABLESPACE_NAME='USERS'"); my ($iniext, $nxtext) = $dbh->selectrow_array (    "SELECT INITITAL_EXTENT, NEXT_EXTENT FROM DBA_TABLESPACES        WHERE TABLESPACE_NAME=?", undef, "USERS"); my...

学习Perl DBI -- 绑定(Bind)变量

    给SQL语句动态地传入值的方法叫绑定(Bind), 在写数据库有关的角本时, 这是很重要的一点, 在Perl中你可以在SQL中写一个问号表示不确定的值, 不管是在SELECT还是在Insert/Update/Delete语句中, 都一样. 如下所示: my $sth = $dbh->prepare( "select tname from tab         where tname like ?"); ...... my $sth = $dbh->prepare("Delete from test where col1=?");     接下来在执行之前要传入真实的值和类型, bind_param就是用来传入值的, 第一个参数为问题的位置, 从1开始数; 第二个参数为变量的值; 第三个参数是可选的, 为参数的类型. 如下所示:...

学习Perl DBI -- 处理查询语句

    在建立连接后, 就可以进行查询了. 可以用prepare函数来准备一个SQL语句, 获得一个Cursor的句柄(Handle)后就可以执行了, 如下所示: my $sth = $dbh->prepare("select ....."); if (!defined($sth)) { ...... } if ($sth->execute()) { ...... }     在调用execute函数(如果成功返回True, 否则False)后, 接下来需要进行Fetch操作才能将查询的结果取出来, 取出记录有很多种方法: my ($col1, $col2, ....); while ( ($col1, $col2, ...) = $sth->fetchrow_array() )...

学习Perl DBI -- 连接到数据库

    从data_sources函数知道了连接信息的格式后, 我们就可以连接了, 只要调用DBI的connect函数, 根据连接信息的格式, 可以自动区别数据库类型, 选择合适的数据库驱动进行连接. 一般写法如下: my $dbh = DBI->connect("data source", "username", "password"); my $dbh = DBI->connect("data source", "username", "password", properties);     connect函数如果连接失败会返回undef值, 因此很容易判断连接是否成功: my $dbh = DBI->connect("dbi:Oracle:test8i","anysql", "anysql")             || die("Cannot connect...

学习Perl DBI -- Database Driver

    从今天开始起从头学习Perl的DBI编程, 先接触到的是DBI中的数据库驱动(Driver)对象, 有三个函数可以调用: avaialable_drivers, data_sources和connect. connect是用来连接到数据库的, avaialable_drivers是用来看你所安装的Perl支持那几种数据库. 如下面的代码: #!/usr/bin/perl -w # use DBI; my @drvlist = DBI->available_drivers(); foreach my $drvname (@drvlist) {    print ("$drvname\n"); }     在运行后输出的结果是: ExampleP Oracle Proxy     data_sources函数是用来列出有那些数据库可以连接的,如下面的代码: #!/usr/bin/perl -w #...

为Windows上的ActivePerl编译和安装DBD-Oracle模块

    Perl角本的确管用, 应当推荐使用, Windows平台可以用ActivePerl, 它可以免费下载. 为了和Unix一保持一致(/usr/bin/perl), 我是安装到"c:\usr"目录的, 接下来我们就来安装DBD-Oracle模块吧!     首先要安装DBI, ActivePerl默认安装是没有DBI的, 先让机器能连上互联网, 然后运行PERL_HOME的bin子目录下的Perl Package Manager(ppm.bat)程序, 会出现一个命令行, 输入"install DBI"就可以了, 这一步不会很久的. 如下所示: ppm> install DBI ==================== Install 'DBI' version 1.53 in ActivePerl 5.8.0.806. ==================== Downloaded 597997 bytes. Extracting 82/82: blib/arch/auto/DBI/Driver_xst.h...

偶学Perl过程中写的第二个程序

    对于管理Unix/Linux上面数据库的DBA来说, 学点Perl是很有用的技术. 来到这个公司后, 所有的数据库都在Unix上, 因此也就有了学习Perl的压力, 可到现在也没有学好, 没有为公司写过一个用Perl语言的小工具. 下面是我学习过程中的第二个程序, 其中用到了DBI来查询数据库的记录. 程序如下: #!/usr/bin/perl -w # use DBI; # Get a database connection Handle. my $dbconn = DBI->connect("dbi:Oracle:tnsname","username","password"); my $row; # Fetch record row by row into an array $row=$dbconn->selectall_arrayref("SELECT TNAME,TABTYPE...

如何编译Perl的Oracle模块?

    发现我们用的Perl在数据库版本变化后(如8i到9i, 9i到10g)时, DBD-Oracle模块都需要重新编译Perl才能工作. 在多种数据库版本混合使用的环境下, 就需要安装几个Perl(或只使用一个版本的客户端)才能解决问题, 其中的原因是因为编译出来的Oracle.so会去找特定版本的Oracle客户端库文件, 如下所示: $ldd ./lib/site_perl/5.8.5/sun4-solaris-64/auto/DBD/Oracle/Oracle.so         libclntsh.so.9.0 =>      /export/home/oracle/products/9201/lib/libclntsh.so.9.0         libnsl.so.1 =>   /usr/lib/64/libnsl.so.1         libsocket.so.1 =>        /usr/lib/64/libsocket.so.1         ......     其实在每一个Oracle的客户端库目录下都会有一个"libclntsh.so"的链接指向"libclntsh.so.ver", 如果在ldd的输出中只去查找"libclntsh.so"的话, 就可以解决在8i/9i/10g下的重新编译的问题了. 我在编译OCI程序时, 就没有不同版本的客户端的问题. $ldd ociuldr.bin         libm.so.1 =>     /usr/lib/libm.so.1         libclntsh.so =>  /export/home/oracle/products/9201/lib32/libclntsh.so         ......     今天就将这个方法用在Perl的DBD-Oracle模块中试试吧, 首先下载DBD-Oracle源程序, 然后就可以开始了. 如果你只想替换Oracle.so文件,...

根据标记(Tags)来查找:

分类 | Categories

本站基于MT-3.36免费版, 和Fenng设计的模板.
(©)版权所有, 2004 - 2008, www.AnySQL.net, 保留所有权利.
MSN: loufangxin(a)msn.com, Mail: anysql(at)126.com/support(at)iamdba.com, Skype ID:anysql