... Due to this, I can't use ...
I don't see what's keeping you from doing the parameter binding
within your putData()/getData() routines, once you have
the appropriate statement handle available... Roughly sketched:
sub putData {
my $self = shift;
my $sql = shift;
my %param = @_;
# get the statement handle
my $sth = $self->dbh()->prepare($sql);
# do the param binding
for my $name (keys %param) {
$sth->bind_param(":$name", $param{$name});
}
# execute
$sth->execute();
}
You would then call putData() for example like this
$mydb->putData(
# the SQL
'BEGIN
myApp.myProc(:foo, :bar, :baz);
END;',
# the named params
foo => "whatever",
bar => $data,
baz => $obj->method('arg'),
);
Add the appropriate error/exception handling, rollback and whatever
you need... and you're done, essentially :)
(I've sketched it in OO style (to avoid having to pass around
$dbh, etc.), but there's no reason you couldn't do it similarly without
OO...)
P.S.: I'm assuming you're still struggling with the same issue addressed in your previous two threads: Call stored procedure in perl and Getting error while invoking a SQL Procedure — which it's always a good idea to link to in order to provide some context for a followup question... |