[ Hermetica ]

DBI Frequently Asked Questions v.0.35
更新日: 1997年7月20日

  • 名前
  • 概要
  • バージョン
  • 解説
  • 基本情報 & 情報源
  • コンパイルの問題
  • プラットフォームとドライバーの重要点
  • プログラミングに関する質問
  • サポートと練習
  • その他の参考文献
  • 著者
  • 著作権

    名前

    DBI::FAQ -- Perl5におけるデータベースインターフェースに関する一般的な質問


    概要

        perldoc DBI::FAQ
    


    バージョン

    このドキュメントは、1997年7月20日現在でバージョン0.35です。


    DESCRIPTION

    このドキュメントはDBIのメーリングリストとDBI開発メンバーに寄せられたもっとも一般的な質問に答えています。


    基本情報 & 情報源


    1.1 DBI、DBperl、Oraperlそして*perlって何?

    DBIの設計者であり著者であるTim Bunceより:

        "DBIはPerl言語でデータベースにアクセスするためのアプリケーションプログラムインターフェース(API)です。DBI APIの仕様は、実際にデータベースを使用するために、独立した一貫性のあるデータベースインターフェースを供給する機能、変数、方法のセッを定義します。"
    

    シンプル言語であるDBIインターフェースは、ユーザーがマルチタイプのデータベースに直接アクセスすることを可能にします。そして、もしオラクル、Informix、mSQL、サイベースあるいは他のどんなデータベースに接続するときも、あなたは3GLレイヤーの基本構造を知る必要はありません。DBIによって定義されるAPIは、これらすべてのデータベースタイプで動作します。

    同様の利点が、perlスクリプト内で異なるベンダーの2つの異なるデータベースに接続することを可能にすることによってえられます。すなわち1つのプログラムでオラクルデータベースからデータを読みたい、Informixデータベースにデータをインサートしたいと言ったような。 DBIはこのようなシンプルで効果的な方法を可能します。

    これはその原理を説明した図式です。

    [ DBI Architecture ]

    DBperlはインターフェースの仕様としては古い名前です。oraperl, isqlperl, ingperl等々は普通perl4モジュールのデータベースインターフェースを意味します。これらのインターフェースはスタンダードなAPIではなく、一般的にサポートもされていません。

    これはDBperlモジュールのリストです。それぞれDBIに対応するものと、サポートの情報です。どうぞ記述してください。ここにリストされた著者は一般的に同じデータベースに関してDBIモジュールをメンテナンスしません。これらのemailアドレスは公開され、以下にリストされたperl4モジュールに接続するための質問のためのみに使用されるべきです。DBIドライバーに関する質問はdbi-usersメーリングリストに直接質問してください。

    Module Name Database Required Author DBI
    Sybperl Sybase Michael Peppler DBD::Sybase
    <mpeppler@itf.ch>
    Oraperl Oracle 6 & 7 Kevin Stock
    <dbi-users@fugue.com>
    DBD::Oracle
    Ingperl Ingres Tim Bunce &
    Ted Lemon
    <dbi-users@fugue.com>
    DBD::Ingres
    Interperl Interbase Buzz Moschetti
    <buzz@bear.com>
    DBD::Interbase
    Uniperl Unify 5.0 Rick Wargo
    <rickers@coe.drexel.edu>
    None
    Pgperl Postgres Igor Metz
    <metz@iam.unibe.ch>
    DBD::Pg
    Btreeperl NDBM John Conover
    <john@johncon.com>
    SDBM?
    Ctreeperl C-Tree John Conover
    <john@johncon.com>
    None
    Cisamperl Informix C-ISAM Mathias Koerber
    <mathias@unicorn.swi.com.sg>
    None
    Duaperl X.500 Directory Eric Douglas
    User Agent
    None

    しかしながらいくつかのDBIモジュールはDBperlエミュレーション層を持ちます。それでDBD::OracleがOraperlのエミュレーション層となり、引き継いだoraperlスクリプトを変更せず稼動させることが出来ます。そのエミュレーション層はDBIでコールされるoraperl APIを変換し、DBIスイッチを通してそれらを実行します。

    これはエミュレーション層の情報のテーブルです。:

    Module Emulation Layer Status
    DBD::Oracle Oraperl Complete
    DBD::Informix Isqlperl Under development
    DBD::Sybase Sybperl Working? ( Needs verification )
    DBD::mSQL
    DBD::mSQL-0.61
    Msqlperl Experimentally released with

    Msqlperlエミュレーションは特別なケースです。MsqlperlmSQLデータベースのためのperl5ドライバーです。しかし、DBIの仕様と一致していません。 その使用はDBD::mSQLの好意に反対を唱えられています。MsqlperlはCPAN viaからダウンロードすることが出来ます。:

        http://www.perl.com/cgi-bin/cpan_mod?module=Msqlperl
    


    1.2. どこで入手出来るの?

    DBIは主に以下から分配されています。:

        ftp://ftp.demon.co.uk/pub/perl/db
    

    広範囲にわたるPerlアーカイブネットワークのリソースのローカルミラーサイトは普通遅れがあるので、ドライバーのバージョンアップを入手するために使用されるべきです。CPANはTom Christiansenのすばらしい複合プログラムを経由してアクセス出来ます。

        http://www.perl.com/CPAN/
    

    より明確なバージョン情報と正確なドラバーのURLに関してはDBIドライバーリストを参照してください。DBIモジュールのページは以下のURLで参照することが出来ます。

        http://www.hermetica.com/technologia/perl/DBI
    


    1.3. その他の情報はどこで得ることが出来るの?

    DBI上にいくつかの情報があります。

    DBIの仕様
        http://www.hermetica.com/technologia/perl/DBI/doc/dbispec
    

    このリンクで2つの入手可能な詳述情報があります。新しいDBIのドラフトの仕様は開発チームが安定したインターフェースを目指して、迅速にドキュメントに反映されているものと、現在のDBIインターフェースを含まない古い歴史的なDBperlの仕様とがあります。

    後のドキュメントは歴史的な興味のみとしてみなされるべきです。そしてそれはプログラミングのマニュアル、あるいはある程度の常識をもった著作物として使われるべきです。しかしながら、それはまだとても役に立つ参考文献です。

    POD documentation
    PODは普通、Perlプログラム内に埋め込まれた大量のドキュメントです。そしてそれはモジュールを使用するプログラマーやユーザーにとって役に立つリソースを供給する、コード``in place''のドキュメントです。 DBIとドライバーに関するPODはより一般的になってきています。そしてこれらのモジュールに関するドキュメントは次のコマンドで読むことができます。

    DBIの仕様
    DBIの仕様に関するPODは以下で参照することが出来ます。

        perldoc DBI
    

    command.

    Oraperl
    DBD::Oracleに含まれるOraperlエミュレーション層の使用方法は、次のようにタイプすることによってOracleのインターフェースのプログラミング方法を参照することが出来ます。

        perldoc Oraperl
    

    これはperl4に関するKevin Stockによって書かれたオリジナルoraperlのmanページをコピーしたものを更新したものです。oraperl APIは完全にリストされ、そこに記述されています。

    DBD::mSQL
    DBD::mSQLモジュールの使用方法は、次のようにタイプすることによってprivate機能とタイプによるドライバーの癖についていくつか参照出来るでしょう。

        perldoc DBD::mSQL
    

    Frequently Asked Questions
    このドキュメント、Frequently Asked QuestionsはまたPODドキュメントとしても参照可能です。システム上で以下の様にタイプすると読むことが出来ます。

        perldoc DBI::FAQ
    

    これはインターネットに接続できない人にとってより便利かもしれません。

    一般的なPOD
    記述されているPOD上の情報と一般的なPODの原理は以下のようにタイプすることによって読む事が出来ます。

        perldoc perlpod
    

    インストールされているTkモジュールの使用方法はtkpodと呼ばれる使用可能なTkをベースとしたPODリーダーがあることで、習得することに興味がわくかもしれない。そしてそれは使用でき、参照できるPODフォーマットです。

    とりとめのない小ニュースと発言
        http://www.hermetica.com/technologia/perl/DBI/tidbits
    

    単純なポイントを解明する試みが、かなり広範囲のドキュメントを立案することになってしまう、DBIメーリングリスト上で、種々の人々からの一連の時折のとりとめもなく書かれたものがあります。 品質の面でしばしば変化しますが、インターフェースの働きの中でいくらかの洞察を供給します。

    ``DBI -- The perl5 Database Interface''
    これはDBIの構造上についてAlligator DescartesとTim Bunceによって書かれた記事です。それはThe Perl Journalの第5版で発行されました。それはかなり良いです。その雑誌を買いに行ってください。実際にそれらすべてを購入してください。Perl Journalのwwwサイトは:

        http://www.tpj.com
    

    ``DBperl''
    ”Dr. Dobbs Journal”の1996年11月刊行のこの記事は、DBperlに関係しています。この版の著者はどうも彼の記事に含む情報の確認のために、わざわざDBIの開発チームメンバーに連絡をとらなかったようです。dbi-usersのメーリングリストでのレビューのいくつかが控えめに言っても、軽べつ的でした。事実、その記事は情報の古いDBIの代わりにDBperlについて書かれています。

    しかしながら、私たちは完全性の目的のために参考文献を含めます。

    ``The Perl5 Database Interface''
    この項目はAlligator Descartesによって書かれた項目で、この冬O'Reillyによって出版されます。

    おそらくこれはその書籍の目次となるでしょう。

         * Introduction
              + Databases
              + CGI / WWW
              + perl
         * Basic Database Concepts
              + Types of Database
                   o Flat File
                   o AnyDBM
                   o RDBMS
              + Using Which Database For What...
         * SQL
              + Why SQL?
              + Structuring Information In Databases
              + Retrieving Data From Databases
              + Manipulating Data and Data Structures
         * DBI Architecture
         * Programming with DBI
              + DBI Initialization
              + Handles
                   o Driver Handles
                   o Database Handles
                   o Statement Handles
              + Connection and Disconnection
              + Handling Errors
              + Issuing Simple Queries
              + Executing Atomic Statements
              + Statement MetaData
              + More perl-ish Statements
              + Binding
              + Transaction Handling
              + Utility Methods
              + Handle Attributes and Dynamic Variables
         * DBI and ODBC
         * The Database Drivers
              + DBD::Oracle and oraperl
              + DBD::Informix and isqlperl
              + DBD::mSQL and Msqlperl
         * Case Studies
              + DBI and the WWW
              + Data Migration and Warehousing
              + Administration Software
         * Appendix: API Reference / Specification
         * Appendix: Resources
    

    README files
    それぞれのドライバーに含まれているREADMEファイルはときどきユーザーにとって関係あるかもしれないいくつかの有益な情報を含んでいます。どうぞそれらを読んでください。それは我々の価値のない存在を絶えられるものにします。これらはすべてDBIのメインのWWWページで参照することが出来ます。:

        http://www.hermetica.com/technologia/perl/DBI
    

    Mailing Lists
    Ted Lemonによって運用されているDBIのための3つのメーリングリストがあります。これらは以下のURLのWorld Wide Webを通してsubscrib、unsubscribすることが出来ます。

        http://www.fugue.com/dbi
    

    ユーザーが参加出来るリストです。:

    dbi-announce
    このメーリングリストは情報発信のみです。大変低いトラヒックです。その情報発信はいつも主にDBIのWWWページ上に公開されます。

    もしあなたがWWWページ上からの操作で成功しなかった場合は、以下のような書式でリストにsubscribeしてください。:

        Email: 'dbi-announce-request@fugue.com' with a message body of
        'subscribe'
    

    dbi-dev
    このメーリングリストはDBIインターフェース、APIとドライバーのメカニズムについての考えやコンセプトを話し合う開発者どうしが使用すること意図しています。開発者や興味を持った団体のみが使用しています。トラヒックは低いです。

    もしあなたがWWWページ上からメーリングリストへの登録が成功しなかった場合、以下の方法でリストにsubscribeしてください。

        Email: 'dbi-dev-request@fugue.com' with a message body of
        'subscribe'
    

    dbi-users
    このメーリングリストはバグレポート、問題の話し合い、一般的な質問に関して使用されている一般的な話し合いのメーリングリストです。トラヒックは普通くらいです。

    もしあなたがWWWページ上での登録出来なかった場合は、次のようにリストにsubscribeしてください。:

        Email: 'dbi-users-request@fugue.com' with a message body of
        'subscribe'
    

    メーリングリストアーカイブ
    US メーリングリストアーカイブ
        http://outside.organic.com/mail-archives/dbi-users/
    

    3つのメーリングリストのアーカイブとユーザーがブラウザに対してセットアップした多くの古いトラヒックのいくつかはhypermailで探してください。

    ヨーロッパのメーリングリストアーカイブ
        http://www.rosat.mpe-garching.mpg.de/mailing-lists/PerlDB-Interest
    

    As per the US archive above.


    コンパイルの問題


    2.1.コンパイルの問題または”テストの失敗!”

    第一に、モジュールに関するオンライン情報を調べてください。あなたのシステム構成で既に分かっているコンパイルの問題であるかどうかDBI自身、あるいはDBDを参照してください。これらのドキュメントは以下のURLで参照することが出来ます。:

        http://www.hermetica.com/technologia/perl/DBI
    

    もしその問題が既に分かっている問題ならば、あなたはおそらくそれがフィックスするまで待たなければならないでしょう。もしあなたが本当にそれをフィックスさせたいなら次のことにトライしてください。

    自分自身でフィックスさせてみてください。
    この技術は一般的にやる気の無い人にはお薦め出来ません。もしあなたがその問題をどうにかフィックスさせようと考えているならば次の説明と一緒に著者にパッチファイルを送ってください。:

    • 問題が何か、もし可能ならばテストケース。

    • あなたが何をする必要があるのかフィックスしてください。すべてのことについて確実にしてください。

    • プラットフォームインフォメーション、データベースバージョン、Perlのバージョン、モジュールのバージョン、DBIのバージョン。

    著者にEmailで不平を言わないでください!
    あなたがかかえている問題についてどのドライバーでもWWWページでリストされているアドレスにメールしてください。WWWページでリストされいるものと一致しないアドレスに対して、直接著者にメールしないでください。

    私たちはするべき真の仕事をしようと勤めています。私たちは問題に対応するためにメーリングリスト読むようにしています。また私たちは、ここではあなたの好むプラットフォームにアクセスしたことがないかもしれませんし、とにかくサポートすることは出来ません。厳しく聞こえたらすみません。しかしながらそのようにしてください!

    しかしながらあなたがたは私たちがどんな方法でもやるべき種類のことをするとき、3amでこれらのクリエイティブな特徴をキャッチできるかもしれません。そして5分内にpatchを得ることが出来るかもしれません。DBIの活動における環境は、私たちが類似した環境で作業してからユーザーの問題を認識することにあります。

    もしあなたが著者にメールする予定ならば、出来るだけたくさんの情報を提供してください。 すなわち:

    • 問題のあるモジュールのREADMEファイルにないすべての情報。それに関するすべての情報を意味します。私たちは私たちの健康のために、あるいは標準的な長さの不明瞭なREADMEファイルのために、ドキュメント内にそのような一行を記述しません。

    • もしあなたがたがcore dumpを持つならば、core dumpからstack traceを引き起こすDevel::CoreStackモジュールにトライしてください。私たちにもそれを送ってください。Devel::CoreStackはCPANで見つけることが出来ます。

          http://www.perl.com/cgi-bin/cpan_mod?module=Devel::CoreStack
      

    • モジュールのバージョン、perlのバージョン、テストケース、オペレーティングシステムのバージョン、そしてその他関連する情報。

    覚えておいてください、あなたがたが私たちに送るさらなる情報が、よりはやく私たちが問題を突き止めることを可能にします。もしあなたがたが私たちに何も情報を送らないならば、何も期待しないでください。

    Email the dbi-users Mailing List
    問題があるにもかかわらずメーリングリストにccをつけることは普通かなり高度な考えです。著者はすべてのリストを読んでいます。そしてあなたがたはそこにメールすることによって何も失いません


    プラットフォームとドライバーの問題点


    3.1 ODBCとDBIの違いは何?

    良い質問ですね。詳細の中で詳しく説明されています。


    3.2 プラットフォームがWindows 95 / NTでもサポートされているの?

    とうとうYESです!Jeff UrlwinはこれらのプラットフォームでDBIDBD::Oracleをこつこつと構築し続けました。安定したperlとMakeMakerのportの出現でそのプロジェクトは急速な進展をとげました。

    Win32ポートのDBIDBD::Oracleは現在DBIのスタンダードです。0.81以降のバージョンのDBIは快適に動作するはずです。DBD::Oracleのパッチが必要ですのでWin32のportingページを読んでください。

        http://www.hermetica.com/technologia/perl/DBI/win32
    


    3.3 DBIでMicrosoft AccessかSQL-Serverデータベースにアクセスすることは出来るの?

        Contributed by Tim Bunce and Jeff Urlwin
    

    DBI-0.79(以降)で供給されたWin32::ODBCモジュールに対する実験DBIの’エミュレーションレイヤー’です。 Supplied with DBI-0.79 ( and later ) is an experimental DBI 'emulation layer' for the Win32::ODBC module. It's called DBI::W32ODBC and is, at the moment, very minimal. You will need the Win32::ODBC module available from:

        http://www.roth.net
    

    Given its status, problem reports without fixes are likely to be ignored. You will also need the Win32 DBI patch kit as supplied by Jeff Urlwin, which you can locate by reading the previous question's answer.

    Jeff Urlwin is currently working hard on the ODBC layer.

    To get back to the question, theoretically, yes, you can access Microsoft Access and SQL-Server databases from DBI via ODBC!


    3.4 Is the a DBD for <insert favourite database here>?

    Is is listed on the DBI drivers page?

        http://www.hermetica.com/technologia/perl/DBI/DBD
    

    If not, no. A complete absence of a given database driver from that page means that no-one has announced any intention to work on it.

    A corollary of the above statement implies that if you see an announcement for a driver not on the above page, there's a good chance it's not actually a DBI driver, and may not conform to the specifications. Therefore, questions concerning problems with that code should not really be addressed to the DBI Mailing Lists.


    3.5 What's DBM? And why should I use DBI instead?

    Extracted from ``DBI - The Database Interface for Perl 5'':

        ``UNIX was originally blessed with simple file-based ``databases'', namely
        the dbm system. dbm lets you store data in files, and retrieve
        that data quickly. However, it also has serious drawbacks.
    

            File Locking
    

            The dbm systems did not allow particularly robust file locking
            capabilities, nor any capability for correcting problems arising through
            simultaneous writes [ to the database ].
    

            Arbitrary Data Structures
    

            The dbm systems only allows a single fixed data structure:
            key-value pairs. That value could be a complex object, such as a
            [ C ] struct, but the key had to be unique. This was a large
            limitation on the usefulness of dbm systems.
    

        However, dbm systems still provide a useful function for users with
        simple datasets and limited resources, since they are fast, robust and 
        extremely well-tested. Perl modules to access dbm systems have now
        been integrated into the core Perl distribution via the
        AnyDBM_File module.''
    

    To sum up, DBM is a perfectly satisfactory solution for essentially read-only databases, or small and simple datasets. However, for more powerful and scaleable datasets, not to mention robust transactional locking, users are recommended to use DBI.


    3.6 When will mSQL-2 be supported?

    As of DBD::mSQL-0.61, there has been support for mSQL-2. However, there is no real support for any of the new methods added to the core mSQL library regarding index support yet. These are forthcoming and will be accessible via func methods private to DBD::mSQL. You can read more about these private methods in the DBD::mSQL POD that can be found by typing:

        perldoc DBD::mSQL
    

    provided you have DBD::mSQL correctly installed.


    3.7 What database do you recommend me using?

    This is a particularly thorny area in which an objective answer is difficult to come by, since each dataset, proposed usage and system configuration differs from person to person.

    From the current author's point of view, if the dataset is relatively small, being tables of less than 1 million rows, and less than 1000 tables in a given database, then mSQL is a perfectly acceptable solution to your problem. This database is extremely cheap, is wonderfully robust and has excellent support. More information is available on the Hughes Technology WWW site at:

        http://www.hughes.com.au
    

    If the dataset is larger than 1 million row tables or 1000 tables, or if you have either more money, or larger machines, I would recommend Oracle7 RDBMS. Oracle's WWW site is an excellent source of more information.

        http://www.oracle.com
    

    Informix is another high-end RDBMS that is worth considering. There are several differences between Oracle and Informix which are too complex for this document to detail. Information on Informix can be found on their WWW site at:

        http://www.informix.com
    

    In the case of WWW fronted applications, mSQL may be a better option due to slow connection times between a CGI script and the Oracle RDBMS and also the amount of resource each Oracle connection will consume. mSQL is lighter resource-wise and faster.

    These views are not necessarily representative of anyone else's opinions, and do not reflect any corporate sponsorship or views. They are provided as-is.


    3.8 Is <insert feature here> supported in DBI?

    Given that we're making the assumption that the feature you have requested is a non-standard database-specific feature, then the answer will be no.

    DBI reflects a generic API that will work for most databases, and has no database-specific functionality.

    However, driver authors may, if they so desire, include hooks to database-specific functionality through the func method defined in the DBI API. Script developers should note that use of functionality provided via the func methods is unlikely to be portable across databases.


    Programming Questions


    4.1 Is DBI any use for CGI programming?

    In a word, yes! DBI is hugely useful for CGI programming! In fact, I would tentatively say that CGI programming is one of two top uses for DBI.

    DBI confers the ability to CGI programmers to power WWW-fronted databases to their users, which provides users with vast quantities of ordered data to play with. DBI also provides the possibility that, if a site is receiving far too much traffic than their database server can cope with, they can upgrade the database server behind the scenes with no alterations to the CGI scripts.


    4.2 How do I get faster connection times with DBD::Oracle and CGI?

        Contributed by John D. Groenveld
    

    The Apache httpd maintains a pool of httpd children to service client requests.

    Using the Apache mod_perl module by Doug MacEachern, the perl interpreter is embedded with the httpd children. The CGI, DBI, and your other favorite modules can be loaded at the startup of each child. These modules will not be reloaded unless changed on disk.

    For more information on Apache, see the Apache Project's WWW site:

        http://www.apache.org
    

    The mod_perl module can be downloaded from CPAN via:

        http://www.perl.com/cgi-bin/cpan_mod?module=mod_perl
    


    4.3 How do I get persistent connections with DBI and CGI?

        Contributed by John D. Groenveld
    

    Using Edmund Mergl's Apache::DBI module, database logins are stored in a hash with each of these httpd child. If your application is based on a single database user, this connection can be started with each child. Currently, database connections cannot be shared between httpd children.

    Apache::DBI can be downloaded from CPAN via:

        http://www.perl.com/cgi-bin/cpan_mod?module=Apache::DBI
    


    4.4 ``When I run a perl script from the command line, it works, but, when I run it under the httpd, it fails!'' Why?

    Basically, a good chance this is occurring is due to the fact that the user that you ran it from the command line as has a correctly configured set of environment variables, in the case of DBD::Oracle, variables like $ORACLE_HOME, $ORACLE_SID or TWO_TASK.

    The httpd process usually runs under the user id of nobody, which implies there is no configured environment. Any scripts attempting to execute in this situation will correctly fail.

    To solve this problem, set the environment for your database in a BEGIN { } block at the top of your script. This will solve the problem.

    Similarly, you should check your httpd error logfile for any clues, as well as the ``Idiot's Guide To Solving Perl / CGI Problems'' and ``Perl CGI Programming FAQ'' for further information. It is unlikely the problem is DBI-related.

    The ``Idiot's Guide To Solving Perl / CGI Problems'' can be located at:

        http://www.perl.com/perl/faq/index.html
    

    as can the ``Perl CGI Programming FAQ''. Read BOTH these documents carefully!


    5.1 Can I do multi-threading with DBI?

    As of the current date of this FAQ ( see top of page ), no. perl does not support multi-threading. However, multi-threading is expected to become part of the perl core distribution as of version 5.005, which implies that DBI may support multi-threading fairly soon afterwards.

    For some OCI example code for Oracle that has multi-threaded SELECT statements, see:

        http://www.hermetica.com/technologia/oracle/oci/orathreads.tar.gz
    


    5.2 How do I handle BLOB data with DBI?

    To be written.


    5.3 How can I invoke stored procedures with DBI?

    Assuming that you have created a stored procedure within the target database, eg, an Oracle database, you can use $dbh->do to immediately execute the procedure. For example,

        $dbh->do( "BEGIN someProcedure END" );
    


    5.4 How can I get return values from stored procedures with DBI?

        Contributed by Jeff Urlwin
    

        $sth = $dbh->prepare( "BEGIN foo(:1, :2, :3); END;" );
        $sth->bind_param(1, $a);
        $sth->bind_param_inout(2, \$path, 2000);
        $sth->bind_param_inout(3, \$success, 2000);
        $sth->execute;
    

    Remember to perform error checking, though!


    5.5 How can I create or drop a database with DBI?

    Database creation and deletion are concepts that are entirely too abstract to be adequately supported by DBI. For example, Oracle does not support the concept of dropping a database at all! Also, in Oracle, the database server essentially is the database, whereas in mSQL, the server process runs happily without any databases created in it. The problem is too disparate to attack.

    Some drivers, therefore, support database creation and deletion through the private func methods. You should check the documentation for the drivers you are using to see if they support this mechanism.


    5.6 How can I commit or rollback a statement with DBI?

    To be written.


    5.7 How are NULL values handled by DBI?

    NULL values in DBI are specified to be treated as the value undef. NULLs can be inserted into databases as NULL, for example:

        $rv =
            $dbh->do( "INSERT INTO table VALUES( NULL )" );
    

    but when queried back, the NULLs should be tested against undef. This is standard across all drivers.


    5.8 What are these func methods all about?

    The func method is defined within DBI as being an entry point for database-specific functionality, eg, the ability to create or drop databases. Invoking these driver-specific methods is simple, for example, to invoke a createDatabase method that has one argument, we would write:

        $rv =
            $dbh->func( 'argument', 'createDatabase' );
    

    Software developers should note that the func methods are non-portable between databases.


    Support and Training

    The Perl5 Database Interface is FREE software. IT COMES WITHOUT WARRANTY OF ANY KIND.

    However, some organizations are providing either technical support or training programs on DBI. The present author has no knowledge as to the quality of these services. The links are included for reference purposes only.


    Commercial Support

    The Perl Clinic
    The Perl Clinic can arrange commercial support contracts for Perl, DBI, DBD::Oracle and Oraperl. Support is provided by the company with whom Tim Bunce, author of DBI, works. For more information on their services, please see:

        http://www.perl.co.uk/tpc
    

    for more details.


    Training

    現在トレーニングプログラムはありません。


    その他参考サイト

    このセクションで私たちはDBIユーザーにとって興味を持つであろういろいろなWWWリンク紹介します。これらが結果的にunknown sitesか既に削除されたドキュメントであるかは定かではありません。

        http://www-ccs.cs.umass.edu/db.html
        http://www.odmg.org/odmg93/updates_dbarry.html
        http://www.jcc.com/sql_stnd.html
    


    AUTHOR

    Alligator Descartes <descarte@hermetica.com>


    COPYRIGHT

    This document is Copyright (c)1994-1997 Alligator Descartes, with portions Copyright (c)1994-1997 their original authors. This module is released under the 'Artistic' license which you can find in the perl distribution.

    This document is Copyright (c)1997 Alligator Descartes. All rights reserved. Permission to distribute this document, in full or in part, via email, Usenet, ftp archives or http is granted providing that no charges are involved, reasonable attempt is made to use the most current version and all credits and copyright notices are retained ( the AUTHOR and COPYRIGHT sections ). Requests for other distribution rights, including incorporation into commercial products, such as books, magazine articles or CD-ROMs should be made to Alligator Descartes <descarte@hermetica.com>.


    © 1995-97 Hermetica
    Alligator Descartes - Hermetica