NAME
SqlBatch::InstructionBase
DESCRIPTION
Base class for a sqlbatch instruction
METHODS
- address
-
Returns address number of instruction in the execution plan
- argument($argname)
-
Returns the value of a given instruction argument
- content
-
Returns the value of the instruction's content area
- databasehandle
-
Returns a valid DBI database-handle.
Transaction commit is either done by DBI or sqlbatch on that handle and it's session.
- show_warning($text)
-
Shows a warning text.
- show_error($text)
-
Shows a error text.
- state_dump
-
Returns a HASH-ref to HASH containing the (public) state of the instruction
- configuration
-
Reference to given SqlBatch::Configuration object
- run
-
Abstract method to be overridden in a PERL-instruction
-
HASH-ref to tags required for execution of this instruction.
-
HASH-ref to tags required for preventing execution of this instruction.
- runstate
-
Reference to a SqlBatch::RunState-object
The runstate information are imported from an earlier instruction. After finishing this instruction the public values of that object will be copied to the next instructions runstate.
EXAMPLE OF USAGE
In this is example we execute a PERL-instruction:
--PERL-- -class=MyPerlInstruction -special="Special value"
My content
--END--
The code for an PERL-instruction can look like:
package MyPerlInstruction;
use v5.16;
use strict;
use warnings;
use utf8;
use Carp;
use parent 'SqlBatch::InstructionBase';
sub new {
my ($class,$config,$content,%args) = @_;
my $self = SqlBatch::InstructionBase->new($config,$content,%args);
$self = bless $self, $class;
return $self;
}
sub run {
my $self = shift;
my $verbosity = $self->configuration->verbosity;
my $content = $self->content;
my $self->databasehandle
say "Running Perl instruction module SqlBatch::MyPerlInstruction" if $verbosity > 1;
# Get a given instruction argumment
my $special = $self->argument('special');
# Time for some action
eval {
say "The special argument: ".$special;
say "Instruction content: ".$content;
# Run something againt the database
my $rv = $dbh->...
# And store the returnvalue
$self->runstate->_returnvalue($rv);
...
};
if($@) {
# Handle errors
$self->runstate->_error($@);
self->show_error("Failed running instruction: ".Dumper($self->state_dump));
# Continue dying
croak($@);
}
}
AUTHOR
Sascha Dibbern (sascha at dibbern.info)
LICENCE
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.