On 10/09/10 17:01, Roode, Eric wrote:
> On Friday, September 10, 2010 11:47 AM, Martin J. Evans wrote:
> 
>> You don't look like you did anything but connect and disconnect. You
>> are running it on the script you posted originally aren't you?
>>
>> Can you try again. Remove the use DBD::ODBC and connect flags I
>> asked you to add and simply do the set DBI_TRACE=15=x.x.
>>
>> Search the log for the SQL you issue - if you don't see some of it
>> the tracing is still not right.
> 
> I did run it against the original script!  Here it is once again:
> 
>    #----------------------------------------------------------------
>    use Modern::Perl;
>    use DBI;
>    use Data::Dump qw(dump);
>    
>    sub handle_error
>    {
>        my ($state, $msg, $native) = @_;
>        say qq{handle_error: \$state  is "$state".};
>        say qq{handle_error: \$msg    is "$msg".};
>        say qq{handle_error: \$native is "$native".};
>        return 1;
>    }
>    
>    my $dbh = DBI->connect('DBI:ODBC:driver={SQL
> Server};Server=xxxxx;Database=xxxxx',
>                           'xxxxx', 'xxxxx',
>                           {odbc_cursortype        => 2,
>                            odbc_default_bind_type => DBI::SQL_VARCHAR,
>                            odbc_err_handler       => \&handle_error,
>                            RaiseError             => 1,
>                            PrintError             => 0,
>                           });
>    # Enable tracing
>  
> DBI->trace(DBD::ODBC->parse_trace_flags('odbcconnection|odbcunicode'));
>    
>    my $sth = $dbh->prepare('{? = call error_test(?, ?)}');
>    
>    # Set up parameters
>    my $retval;
>    my $p1 = 'Some input parameter';
>    my $p2 = 75;
>    $sth->bind_param_inout(1, \$retval, 4000, DBI::SQL_VARCHAR);
>    $sth->bind_param      (2,  $p1,           DBI::SQL_VARCHAR);
>    $sth->bind_param_inout(3, \$p2,       32, DBI::SQL_INTEGER);
>    
>    $sth->execute;
>    
>    $_ = defined($_)? qq{"$_"} : '{NULL}' for ($retval, $p1, $p2);
>    say qq{After execute: \$retval is $retval.};
>    say qq{After execute: \$p1     is $p1.};
>    say qq{After execute: \$p2     is $p2.};
>    say 'Done.';
>    #----------------------------------------------------------------
> 
> Then I set DBI_TRACE=15=dt_trace.out in the cmd.exe shell and ran it.
> Most puzzling.  Output was:
> 
>    After execute: $retval is {NULL}.
>    After execute: $p1     is "Some input parameter".
>    After execute: $p2     is "75".
>    Done.
> 
> 
> -- Eric
> 
> 

Weird, because the trace output did not show any of that as fas as I could see.

Martin
-- 
Martin J. Evans
Easysoft Limited
http://www.easysoft.com

Reply via email to