Rocko19 has asked for the wisdom of the Perl Monks concerning the following question:


Hi,
Can somone please tell me how to pass the parameters to a procedure in a perl file without using bind_param?

$rv = $sth->execute;
Rocko

Replies are listed 'Best First'.
Re: Can't bind unknown placeholder
by Fletch (Bishop) on Sep 09, 2009 at 13:29 UTC

    So you want some random hypothetical person on the intarwebz to explain how some random private DBI wrapper (which you haven't show us anything more of than the names of two routines therein) handles placeholders . . .

    Exactly what color are the flying unicorns in your world? And maybe you should be asking them because they probably have a better chance of producing an answer.

    The cake is a lie.
    The cake is a lie.
    The cake is a lie.

Re: Can't bind unknown placeholder
by almut (Canon) on Sep 09, 2009 at 13:59 UTC
    ... 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...

Re: Can't bind unknown placeholder
by JavaFan (Canon) on Sep 09, 2009 at 14:15 UTC
    Considering that your SQL doesn't seem to have any placeholders, why do you want to bind them anyway?