Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > Параметризованный запрос к базе


Автор: infarch 25.9.2020, 13:36
Здравствуйте

Пытаюсь решить проблему со вставкой длинной строки в базу через параметризованный запрос.

Дело происходит на серваке с древней убунту сервер на борту, база данных MS SQL, стоит драйвер freetds.
Проблема в том что строки овер 4000 символов обрезаются до 4000, а с определенного порога (11000 символов примерно) весь скрипт падает с ошибкой "DBD::ODBC::st execute failed: [unixODBC][FreeTDS][SQL Server]Invalid string or buffer length (SQL-HY090)".

Код

    my $isql = "insert into TestTest(HugeText, HugeVC) values (?, ?, ?)";
    query($dbh, $isql, $str, $str);

exit;

sub query {
    my($dbh, $sql, @args) = @_;
    
    my $sth = $dbh->prepare($sql) or die "prepare";
    
    my $c = 1;
    foreach my $param (@args){
        $sth->bind_param( $c++, $param );
    }
    $sth->execute();
    
    die $dbh->err if $dbh->err;
    
    my @result;
    
    if( $sth->{NUM_OF_FIELDS} >  0){
        while(my $ary_ref = $sth->fetchrow_hashref){
            push @result, $ary_ref;
        }        
    }
    
    
    return @result;
}


Не встречался ли кто с таким?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)