2017-02-03 4 views
0

Я звоню SyBase хранимая процедура ниже от Perlfetchrow_array возвращает дополнительный 0 в конце

create procedure testprocedure2 as 
begin 
    select 'one' 
end 
GO 

В Perl я использую DBI

do { 
     while(my @row = $sth->fetchrow_array()){ 
      print $row[0]."\n"; 
     } 
    } while ($sth->{syb_more_results}); 

В результате я получаю

One 
0 

Почему я получаю дополнительный 0 в конце?

+0

какой модуль вы используете для sybase? –

+1

Я думаю, вам нужно посмотреть на '$ sth -> {syb_result_type}' и игнорировать типы результатов, в которых вы не заинтересованы. См. DBD :: Sybase's docs для возможных значений. – ikegami

+0

@ikegami. Спасибо, много застряли на нем в течение длительного времени. – Kraken

ответ

3

Основываясь на быстром просмотре в Интернете, я предполагаю, что вам нужно взглянуть на $sth->{syb_result_type} и игнорировать типы результатов, в которых вас не интересует.

Прочитайте оба документа за DBD::Sybase (какие документы $sth->{syb_result_type}) и this (что немного описывает типы результатов).

Я думаю, что 0 является CS_STATUS_RESULT, результатом хранимой процедуры. Думаю, я нашел подтверждение, что ноль указывает на успех.

Смежные вопросы