Thanks for the suggestions.

DRH's workaround, while it would work, seems very ugly.

I would be interested to know what version of DBD::SQLite Puneet Kishor
is using, since I believe I have tracked the issue to a test in
the sqlite_st_execute() function in dbdimp.c :

    else if (looks_like_number(value)) {
        /* bind ordinary numbers as numbers - otherwise we might sort wrong */
        retval = sqlite3_bind_double(imp_sth->stmt, i+1, SvNV(value));
    }

This test appears in all the versions of DBD::SQLite that I can find
and appears to be what causes the text to be treated as a number.

Does this check actually perform any useful function (as per the comment)
or will it be safe to delete it?

Another workaround would be for the "do" of Perl's DBI:

    $rv  = $dbh->do($statement, \%attr, @bind_values);

to be exteneded in some way to allow bind_types to be passed in.

One could use a prepare, bind_param, execute sequence, but that would
seem to defeat the point of having the do() shortcut in the first place.


-jonathan

--
Jonathan H N Chin, 2 dan | deputy computer | Newton Institute, Cambridge, UK
<[EMAIL PROTECTED]> | systems mangler | tel/fax: +44 1223 767091/330508

                "respondeo etsi mutabor" --Rosenstock-Huessy

Reply via email to