DBI: bind_param приводит строку к ntext -> nvarchar(max) и ntext несовместимы

У меня есть проблема, связанная с bind_param DBI Perl. Работает следующий SQL:

my $sth = $dbh->prepare("SELECT id FROM table WHERE id = 'string'");
$sth->execute();

Хотя следующее не делает:

my $sth = $dbh->prepare("SELECT id FROM table WHERE id = ?");
$sth->execute('string');

Ошибка последнего запроса: [ODBC SQL Server Driver][SQL Server]The data types nvarchar(max) and ntext are incompatible in the equal to operator. (SQL-42000),

Это похоже на bind_paramкоторый вызывается execute, преобразует строку в ntext. Как я могу обойти это?

1 ответ

Решение

Рассмотрим привязку типа значения до вызова SQL:

use DBI qw(:sql_types);

my $sth = $dbh->prepare( "SELECT id FROM table WHERE id = ?" );

my $key = 'string';
my $sth->bind_param( 1, $key, SQL_VARCHAR );

$sth->execute();
Другие вопросы по тегам