NAME
   Oracle::DML::Common - Perl class for creating Oracle triggers

SYNOPSIS
     use Oracle::DML::Common;

     my %cfg = ('conn_string'=>'usr/pwd@db', 'table_name'=>'my_ora_tab');
     my $ot = Oracle::DML::Common->new;
     # or combine the two together
     my $ot = Oracle::DML::Common->new(%cfg);
     my $sql= $ot->prepare(%cfg);
     $ot->execute();    # actually create the audit table and trigger

DESCRIPTION
   This class contains methods to create audit tables and triggers for
   Oracle tables.

  new ()

   Input variables:

     %ha  - any hash array containing initial parameters

   Variables used or routines called:

     None

   How to use:

      my $obj = new Oracle::DML::Common;      # or
      my $obj = Oracle::DML::Common->new;

   Return: new empty or initialized Oracle::DML::Common object.

   This method constructs a Perl object and capture any parameters if
   specified.

METHODS
   The following are the common methods, routines, and functions used by
   other classes.

 Connection Methods

   The *:db_conn* tag includes sub-rountines for creating and managing
   database connections.

     use Oracle::DML::Common qw(:db_conn);

   It includes the following sub-routines:

  get_dbh($con, $dtp)

   Input variables:

     $con - Connection string for
            Oralce: usr/pwd@db (default)
               CSV: /path/to/file
          ODBC|SQL: usr/pwd@DSN[:approle/rolepwd]
     $dtp - Database type: Oracle, CSV, etc

   Variables used or routines called:

     DBI
     DBD::Oracle
     Win32::ODBC

   How to use:

     $self->get_dbh('usr/pwd@dblk', 'Oracle');
     $self->get_dbh('usr/pwd@dblk:approle/rpwd', 'SQL');

   Return: database handler

   If application role is provided, it will activate the application role
   as well.

  is_object_exist($dbh,$tn,$tp)

   Input variables:

     $dbh - database handler, required.
     $tn  - table/object name, required.
            schema.table_name is allowed.

   Variables used or routines called:

     echoMSG    - display messages.

   How to use:

     # whether table 'emp' exist
     $yesno = $self->is_object_exist($dbh,'emp');

   Return: 0 - the object does not exist; 1 - the object exist;

 Table Methods

   The *:table* tag includes sub-rountines for creating, checking and
   manipulating tables.

     use Oracle::DML::Common qw(:table);

   It includes the following sub-routines:

  get_table_definition($dbh,$tn,$cns,$otp)

   Input variables:

     $dbh - database handler, required.
     $tn  - table/object name, required.
            schema.table_name is allowed.
     $cns - column names separated by comma.
            Default is null, i.e., to get all the columns.
            If specified, only get definition for those specified.
     $otp - output array type:
            AR|ARRAY        - returns ($cns,$df1,$cmt)
            AH1|ARRAY_HASH1 - returns ($cns,$df2,$cmt)
            HH|HASH         - returns ($cns,$df3,$cmt)
            AH2|ARRAY_HASH2 - returns ($cns,$df4,$cmt)

   Variables used or routines called:

     echoMSG - display messages.

   How to use:

     ($cns,$df1,$cmt) = $self->getTableDef($dbh,$table_name,'','array');
     ($cns,$df2,$cmt) = $self->getTableDef($dbh,$table_name,'','ah1');
     ($cns,$df3,$cmt) = $self->getTableDef($dbh,$table_name,'','hash');
     ($cns,$df4,$cmt) = $self->getTableDef($dbh,$table_name,'','ah2');

   Return:

     $cns - a list of column names separated by comma.
     $df1 - column definiton array ref in [$seq][$cnn].
       where $seq is column sequence number, $cnn is array
       index number corresponding to column names:
             0 - cname,
             1 - coltype,
             2 - width,
             3 - scale,
             4 - precision,
             5 - nulls,
             6 - colno,
             7 - character_set_name.
     $df2 - column definiton array ref in [$seq]{$itm}.
       where $seq is column number (colno) and $itm are:
             col - column name
             seq - column sequence number
             typ - column data type
             wid - column width
             max - max width
             min - min width
             dec - number of decimals
             req - requirement: null or not null
             dft - date format
             dsp - description or comments
     $df3 - {$cn}{$itm} when $otp = 'HASH'
       where $cn is column name in lower case and
             $itm are the same as the above
     $df4 - [$seq]{$itm} when $otp = 'AH2'
       where $seq is the column number, and $itm are:
             cname     - column name (col)
             coltype   - column data type (typ)
             width     - column width (wid)
             scale     - column scale (dec)
             precision - column precision (wid for N)
             nulls     - null or not null (req)
             colno     - column sequence number (seq)
             character_set_name - character set name

HISTORY
   * Version 0.1
       This versionwas contained in Oracle::Trigger class.

   * Version 0.2
       04/29/2005 (htu) - extracted common routines from Oracle::Trigger
       class and formed Oracle::DML::Common.

SEE ALSO (some of docs that I check often)
       Data::Describe, Oracle::Loader, CGI::Getopt, File::Xcopy,
       Oracle::Trigger, perltoot(1), perlobj(1), perlbot(1), perlsub(1),
       perldata(1), perlsub(1), perlmod(1), perlmodlib(1), perlref(1),
       perlreftut(1).

AUTHOR
       Copyright (c) 2005 Hanming Tu. All rights reserved.

       This package is free software and is provided "as is" without
       express or implied warranty. It may be used, redistributed and/or
       modified under the terms of the Perl Artistic License (see
       http://www.perl.com/perl/misc/Artistic.html)