Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl DBI:引用函数v/s bind_params,处理大型输入_Perl_Dbi_Freetds - Fatal编程技术网

Perl DBI:引用函数v/s bind_params,处理大型输入

Perl DBI:引用函数v/s bind_params,处理大型输入,perl,dbi,freetds,Perl,Dbi,Freetds,希望了解语句处理程序的DBI::quote v/s bind_参数与处理存储过程的大型输入时的区别 环境:Perl+DBI+FreedTDS->SQL Server 示例代码1:使用函数quote() 示例代码2:将绑定参数用作CLOB my $qry = "exec sp_toload \@XML = ?"; $xml = `cat bigfile_insrt.txt.xml.5k`; my $sth = $dbh->prepare($qry); #$sth->bind_param

希望了解语句处理程序的DBI::quote v/s bind_参数与处理存储过程的大型输入时的区别

环境:Perl+DBI+FreedTDS->SQL Server

示例代码1:使用函数quote()

示例代码2:将绑定参数用作CLOB

my $qry = "exec sp_toload \@XML = ?";
$xml = `cat bigfile_insrt.txt.xml.5k`;
my $sth = $dbh->prepare($qry);
#$sth->bind_param(1,$xml,SQL_LONGVARBINARY);
$sth->bind_param(1,$xml,SQL_CLOB);
$sth->execute();

gets truncated to 7K bytes max for $xml

想知道为什么同时使用SQL_LONGVARBINARY或SQL_CLOB绑定_参数不能超过7K字节,而使用quote的示例1可以处理约100MB的数据

如果省略对
bind_参数的调用会发生什么?如果省略对
bind_参数
的调用并使用
$sth->execute($xml),会发生什么
相反?相同的结果
DBD::Sybase::st执行失败:服务器消息编号=9400严重性=16状态=1行=0服务器=。。。过程=。。。text=XML解析:第3行,字符7976,输入意外结束
,被截断为~7KI我不确定(我已经有一段时间没有在DBI中使用FreeTDS了),但您确定截断发生在7K左右吗?或者错误是说第1行和第2行,加上第3行的7k+字符?无论哪种方式,都要在
freetds.conf
中检查
text size
的值;您可以将其设置为最大值
4294967295
,然后查看是否有任何效果。尝试将freetds.conf中的
文本大小设置为4294967295
,但没有帮助。
my $qry = "exec sp_toload \@XML = ?";
$xml = `cat bigfile_insrt.txt.xml.5k`;
my $sth = $dbh->prepare($qry);
#$sth->bind_param(1,$xml,SQL_LONGVARBINARY);
$sth->bind_param(1,$xml,SQL_CLOB);
$sth->execute();

gets truncated to 7K bytes max for $xml