我使用perl从Microsoft sql server获取数据。
我需要从列类型为nvarchar
且长度设置为max
的视图中检索数据。
nvarchar的最大长度可以是2GB
。我可以获取除类型定义为nvarchar的列之外的其他数据。
$dbh->{'LongReadLen'} = $dbh->selectrow_array('SELECT MAX(LEN(column)) FROM ViewsName');
my $sth = $dbh->prepare($sql_query) or logger('ERROR',"Prepare Error:\n$DBI::errstr");
$sth->{'LongTruncOk'} = 1;
$sth->execute();
$queries_results_hr->{$query_type}{'data'} = $sth->fetchall_arrayref;
此列的类型为nvarchar。
nvarchar列的数据以下面的格式显示。
所以我的问题是如何使用perl从Microsoft sql获取nvarchar类型数据。
我使用下面的代码来创建数据库连接。
my $db_instance = ".\\SQLEXPRESS";
my $db_name = "MyDBName";
sub create_connection {
my $connect_string = "DBI:ODBC:Driver={SQL Server};Server=$db_instance;Database=$db_name;";
my $dbh = DBI->connect($connect_string) or die("\nCONNECT ERROR:\n$DBI::errstr");
return $dbh;
}
如果DBD :: ODBC是为unicode构建的,我也尝试过checl。如下所示。
print $dbh->{odbc_has_unicode};
它返回1.