Re: need help on $sth->bind_param

[email protected] (Robert Roggenbuck)
Newsgroups perl.dbi.users
Message-ID <[email protected]>
Palla, James schrieb:
> PERL.ORG DBI-USERS,
> Where can I find the valid syntax for the  DBI command "$sth->bind_param".
> 
> The perldoc DBI command shows me this:
> 
>        $rc = $sth->bind_param($p_num, $bind_value);
>        $rc = $sth->bind_param($p_num, $bind_value, $bind_type);
>        $rc = $sth->bind_param($p_num, $bind_value, \%attr);
> 
> How can I see the valid $bind_type values, the third parameter in the command   $sth->bind_param($p_num, $bind_value, $bind_type) ???
> 
> I need to know  this because of an SQL0440N error I got when running a perl program under development.  It is the first time I am using a WHERE CLAUSE LIKE predicate.  A google search suggests I need to provide a bind_parameter to resolve the SQL0440N error such as this:
> 
> $sth->bind_param( 1, 'DB', $attrib_char );
> $sth->bind_param( 2, 'TEXAS', $attrib_char );
> 
> The column in the DBI prepare that we believe is the problem is a TIMESTAMP column.
> 
> Our perl release is perl v5.8.6.
> 
> We are running DB2 V8.2 fixpack 18 on UNIX.
> 
> An help you can give us will be much appreciated.
> 
> James
> 858-246-0300
> 
> James Palla
> Database Administrator
> ACT Data Center
> University of California, San Diego
> Office:   858-246-0300
> Home:   858-538-5685
> Cell:      858-380-7912
> Fax:       858-534-8610
> Email: [email protected]
> 
>    my $sthINQ = $dbh->prepare("SELECT DBA_ID, ".
>       "CHANGE_TIME, ".
>       "FP_TICKET, ".
>       "DB_NAME, ".
>       "SCHEMA_NAME, ".
>       "OBJ_NAME, ".
>       "OBJ_TYPE, ".
>       "ENV_CODE, ".
>       "SCRIPT_DIRECTORY, ".
>       "SUBSTR(CHANGE_DESC,1,50) AS CHANGE_DESC, ".
>       "REQUESTED_BY  ".
>       "FROM DBA.DBA_CHANGE_LOG ".
>       "WHERE DBA_ID = ? ".
>       "AND CHANGE_TIME LIKE ? ".
>       "ORDER BY 1,2 ")
>       or die "prepare #4 failed: " . $dbh->errstr();
> 
>    $sthINQ->bind_param(1,$dba_id);
>    $sthINQ->bind_param(2,$change_time_LIKE);
> 
>    $sthINQ->execute()
>       or die "execute #4 failed: " . $sthINQ->errstr();
> 

Have a look at the DBI documentation:

<citation src="http://search.cpan.org/~timb/DBI-1.609/DBI.pm#bind_param">

Data Types for Placeholders

The \%attr parameter can be used to hint at the data type the placeholder should 
have. This is rarely needed. Typically, the driver is only interested in knowing 
if the placeholder should be bound as a number or a string.

   $sth->bind_param(1, $value, { TYPE => SQL_INTEGER });

As a short-cut for the common case, the data type can be passed directly, in 
place of the \%attr hash reference. This example is equivalent to the one above:

   $sth->bind_param(1, $value, SQL_INTEGER);

The TYPE value indicates the standard (non-driver-specific) type for this 
parameter. To specify the driver-specific type, the driver may support a 
driver-specific attribute, such as { ora_type => 97 }.

The SQL_INTEGER and other related constants can be imported using

   use DBI qw(:sql_types);

</citation>

For the possible values of $bind_type look in the code of DBI.pm for 'sql_types'.

Greetings

Robert
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.