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