NAME

DBIx::PLSQLHandler - PL/SQL procedural language handler.

SYNOPSIS

use DBIx::PLSQLHandler;
my $cursor = new DBIx::PLSQLHandler(
    connection => $connection,
    plsql      => "
DECLARE
debit_amt    CONSTANT NUMBER(5,2) := 500.00;
BEGIN
SELECT a.bal INTO :acct_balance FROM accounts a
WHERE a.account_id = :acct AND a.debit > debit_amt;
:extra_info := 'debit_amt: ' || debit_amt;
END;"
);

my $result_set = $cursor->execute(acct => 000212);
# $result_set->{acct_balance}; $result_set->{extra_info}
... do some stuff

DESCRIPTION

Base class for PLSQL blocks hyandler(SQL Procedural Language). It allows use independetly specyfig Procedural Language SQL dialect like PL/SQL (Oracle, mySQL), PL/pgSQL (PostgreSQL) It uses ":" placeholers to bind variables in or out or inout.

By default it bind variable is defined as varchar, however you can change it by specyfing your types in bind_variables parameter.

        my $plsql_handler = new DBIx::PLSQLHandler(
            name        => 'int_test',
            connection  => $connection,
            plsql       => "BEGIN
            :var1 := :var2 + :var3;
            :var4 := 'long text';
            END;",
	    bind_variables => {
		var1 => {type => 'SQL_INTEGER'},
                var4 => {type => 'SQL_VARCHAR', width => 30}
	    }
	);

In Oracle database plsql is used as an anonymous PLSQL block, In mysql procedure wraps the plsql block. In postgresql function wraps the plsql block. Name for the procedure/function wrapper is created as 'anonymous_' + $self->name

ATTRIBUTES

plsql

Plsql block

bind_variables

Keeps information about binds variables and its types.

bind_in_variales

Ordered list for binding in variables

bind_inout_variales

Ordered list for binding in out variables

bind_out_variales

Ordered list for binding out variables

default_type

default type binding

default_width

default width binding

METHODS

new
initialise

Initialises handler.

initialise_bind_variables

Parses plsql for binding variables. TODO replace this naive implementations.

set_binding_order
add_default_variable_info

Adds default variable meta data.

plsql_block_name

Returns plsql block name (used to create plsql block procedure or function wrapper)

create_plsql_block_binding
get_variable_binding_order

Return bind variable order

binded_in_variables

Returns bind_in_variables + bind_inout_variables

binded_out_variables

Returns bind_inout_variables + bind_out_variables

get_sql_variable_definition

Returns variable definition for plsql block stub

type_precision

Returns variable type precision, takes bind variable name.

block_source

Block source, used for comparision against database wrapper source.

parsed_plsql

Parses plsql code and replaces :var to var

check_block_changed

Checks if plsql_block has been changed and return true otherwise false.

COPYRIGHT AND LICENSE

The DBIx::PLSQLHandler module is free software. You may distribute under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl README file.

SEE ALSO

DBIx::QueryCursor DBIx::SQLHandler

AUTHOR

Adrian Witas, adrian@webapp.strefa.pl