TABLE OF CONTENTS

1.       INTRODUCTION TO DBperl

1.1      Purpose of DBperl
1.2      Background
1.3      Current Work
1.4      Guiding Principles
1.5      Specification Originators And Contributors
1.6      Intellectual Property and Copyright
1.7      For More Information Or To Contribute Constructive Feedback
1.8      Structure Of The Specification

2.       CONVENTIONS, STRUCTURE and OPEN ISSUES

2.1      Architecture of a DBperl Application
2.2      Terms
2.3      General Interface Rules & Caveats
2.4      Naming Conventions
2.5      Notation
2.6      Document Conventions
2.7      Open Issues

3.       DATABASE INTERACTION FUNCTIONS

3.1      Session Management
3.1.1    Introduction
3.1.2    connect
3.1.3    disconnect

3.2      Data Query Functions
3.2.1    Introduction
3.2.2    prepare
3.2.3    execute
3.2.4    titles
3.2.5    fetch
3.2.6    finish
3.2.7    do        (Library Function)
3.2.8    lookup    (Library Function)
3.2.9    proc

3.3      Transaction Management
3.3.1    Introduction
3.3.2    commit
3.3.3    rollback
3.3.4    savepoint

3.4      Navigational Data Query Functions

4.       ERROR AND EVENT HANDLING

4.1      Error Status Functions
4.1.1    errno
4.1.2    errstr
4.1.3    errstate
4.1.4    errmsg

4.2      Event Handler Functions
4.2.1    Introduction
4.2.2    handler
4.2.3    example_handler

4.3      Event Types
4.3.1    Introduction
4.3.2    Standard Event Types
4.3.3    DBperl Defined Event Types
4.3.4    Example Module Specific Event Types

4.4      Using An Event Handler
4.4.1    Introduction
4.4.2    The Retry Mechanism

4.4      DBperl Generic Event Handler Function

5.       THE DBPERL SWITCH AND MODULES

5.1      Introduction
5.2      Switch Variables
5.2.1    $db'version
5.2.2    $db'attribution
5.2.3    $db'last_func
5.2.4    $db'last_handle
5.2.5    $db'last_modh
5.2.6    $ENV{DBPERL_PATH}
5.2.7    $ENV{DBPERL_AUTOLOAD}
5.2.8    $ENV{DBPERL_MODULE}

5.3      Switch Functions
5.3.1    modules
5.3.2    install
5.3.3    call_func

5.4      Switch Basics
5.4.1    DBperl Modules
5.4.2    DBperl Handles
5.4.3    Function Call Routing
5.4.4    Automatic Handle Promotions

5.5      Module Selection
5.5.1    Introduction
5.5.2    Using Module Names
5.5.3    Using Database Type Names

5.6      Module Dynamic Loading
5.6.1    Introduction
5.6.2    Search Method
5.6.3    Automatic Loading on Startup
5.6.4    Example

5.7      Module Layering
5.7.1    Introduction
5.7.2    Examples

6.       ATTRIBUTE NAMES AND VALUES

6.1      Introduction
6.2      Attribute Functions
6.2.1    getvalue
6.2.2    setvalue
6.2.3    Using Attributes With Other Functions

6.3      Attribute Names
6.3.2    MixedcaseNames
6.3.3    lowercase_names
6.3.4    Attribute Scope
6.3.5    Attribute Values
6.3.6    Attribute Listing Legend

6.4      Module Attributes ($modh, $dbh, $sh)
6.4.1    ModuleName  S
6.4.2    ModuleAttribution  S
6.4.3    ModuleHandle  H

6.5      Database Attributes ($dbh, $sh)
6.5.1    IDENTIFIER_LENGTH  I
6.5.2    IDENTIFIER_CASE  S
6.5.3    ROW_LENGTH  I
6.5.4    DbTimeZoneType  S
6.5.5    DbReadCache  I,M
6.5.6    DbNumRows  I
6.5.7    DbHandle  H

6.6      Statement Attributes ($sh)
6.7      Module Specific Attributes
6.8      Switch Specific Attributes
6.8.1    DBperlPortable  B,M
6.8.2    DBperlTrace  S,M
6.8.3    DBperlLog  S,M

7.       DATA TYPE CONVERSION FUNCTIONS

7.1      Introduction
7.2      String Formatting Functions
7.2.1    quote

7.3      Date & Time Functions
7.3.1    Notation & Nomenclature
7.3.2    ndt2udt
7.3.3    udt2ndt

8.       DATA DICTIONARY FUNCTIONS

8.1      Introduction
8.2      Data Dictionary Core Functions
8.2.1    info_table_names
8.2.2    info_table
8.2.3    info_col_names
8.2.4    info_col

9.       EXAMPLES

9.1      Simple SELECT
9.2      Simple INSERT
9.3      Iterative insert from flatfile
9.4      Creating a temporary table
9.5      Error handling
9.6      Bind parameter handling

10       APPENDICES

10.1     Function and Variable Summary
10.2     Portability
10.2.1   Detecting and Declaring Non-Portability

10.3     Ideas for Utilities and Packages
10.5     Module Implementors Template
10.5.1   Example for Oracle Module
10.5.2   Example for Ingres Module