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();