[Salvador-pm] Fwd: Problema

Joenio Costa joenio em gmail.com
Terça Setembro 9 09:51:40 PDT 2014


Oi Allisson,

Conseguiu resolver o seu problema? Nos conta como você resolveu caso
afirmativo...

2014-08-29 22:32 GMT-03:00 Hernan Lopes <hernanlopes em gmail.com>:

> Alisson,
>
> Se esse erro acontece apenas nessa coluna, tenta definir um resultado nulo
> em outra coluna, e veja se ele aparece corretamente.
> Tenta executar o comando usando outra ferramenta e verifica se obtem o
> mesmo resultado.
> Verifica a procedure tambem.
>
> Assim é possível ter mais certeza que o problema não está do lado do banco
>
>
>
> 2014-08-28 11:02 GMT-03:00 Allisson Andrade Lima <allissonlima1 em gmail.com>
> :
>
> Hernan e Joenio,
>>
>> Executei o código com o Data::Printer e foi retornado o
>> valor "\0\0\0\0\0\0\0" na variável nos casos de campos NULL. Pelo menos já
>> é uma luz... hehehehe.
>>
>> Segue abaixo a subrotina em questão para que vocês possam dar uma olhada.
>> Ela ainda está crua, pois como emperrei nesse problema, fiquei
>> exclusivamente nele.
>>
>>
>>
>> sub insereMy {
>>         my ($procedure,$database,$table) = @_;
>>
>>         my ($coluna, $dado, $camposSql, $valuesSql, $querySql,
>> $querySqlTrunc, $i, @tipoCampos, @row, @result);
>>
>>         if(!defined($procedure) or !defined($database) or
>> !defined($table) or ($procedure eq "") or ($database eq "") or ($table eq
>> "")){
>>                 print "Favor informar todos os parâmetros!\n";
>>                 print "P1: PROCEDURE\n";
>>                 print "P2: BANCO DESTINO!\n";
>>                 print "P3: TABELA DESTINO!\n";
>>                 return 0;
>>
>>         }elsif(defined($procedure) or defined($database) or
>> defined($table)){
>>
>>                 &conexaoTcf("$procedure");
>>
>>                 $querySqlTrunc = "TRUNCATE TABLE $table;";
>>
>>                 &conexaoMysql("$database", "$table", "$querySqlTrunc");
>>
>>                 $camposSql = join ", ", @{$dbResultDb2->{NAME}};
>>
>>                 for($coluna = 0; $coluna < $tCampos; $coluna = $coluna +
>> 1){
>>                           $tipoCampos[$coluna] =
>> $dbResultDb2->{TYPE}->[$coluna];
>>                 }
>>
>>                 while(@row = $dbResultDb2->fetchrow_array) {
>>                         $valuesSql = "";
>>
>>                         for($coluna = 0; $coluna < $tCampos; $coluna =
>> $coluna + 1){
>>                                  print "Tamanho:
>> ".length($row[$coluna])."\n";
>>                                 p $row[$coluna];
>>
>>                                 if (!$row[$coluna]){
>>
>>                                         $dado = 'NULL';
>>
>>                                 }else{
>>
>>                                         if (($tipoCampos[$coluna] == 3 or
>> $tipoCampos[$coluna] == 6 or $tipoCampos[$coluna] == 7) and
>> (defined($row[$coluna]))){
>>
>>                                                 $dado = $row[$coluna];
>>                                                 $dado =~ s/[,]/./;
>>
>>                                         }else{
>>
>>                                                 $dado = $row[$coluna];
>>                                         }
>>                                         }
>>
>>                                 }
>>
>>                         $result[$coluna] = $dado;
>>
>>                         #print "Dado: ".$dado;
>>                         #print "\n";
>>                         #print "Row: ".$row[$coluna];
>>                         #print "\n";
>>
>>                         }#FIM FOR COLUNA
>>
>>
>>                         ###Monta valores para insert
>>                         for($coluna = 0; $coluna < $tCampos; $coluna =
>> $coluna + 1){
>>                                 $valuesSql =
>> $valuesSql.'"'.$result[$coluna].'",';
>>                         }
>>                         ###Retira a virgula do ultimo valor
>>                         $valuesSql =~ s/,+$//;
>>                          $querySql = "insert into $table ($camposSql)
>> values ($valuesSql);";
>>                         &conexaoMysql("$database", "$table", $querySql);
>>
>>                 }#FIM WHILE
>>
>>                 $dbResultDb2->finish();
>>         }#FIM ELSEIF
>> }#FIM SUBROTINA
>>
>>
>>
>> Em 27 de agosto de 2014 18:56, Hernan Lopes <hernanlopes em gmail.com>
>> escreveu:
>>
>> Alisson,
>>>
>>> Pode mostrar o código que você está usando ?
>>> Está usando DBIx::Class ?
>>> ou DBI puro ?
>>>
>>> de qualquer maneira, não sei se vc está usando mas caso não esteja pode
>>> tentar usar o Data::Printer pra debugar teu problema...
>>>
>>> perl -e 'use Data::Printer; my @bla = (qw|aa bb cc|); warn p @bla;'
>>>
>>>
>>>
>>>
>>>
>>>
>>> 2014-08-27 18:15 GMT-03:00 Allisson Andrade Lima <
>>> allissonlima1 em gmail.com>:
>>>
>>>> Olá,
>>>>
>>>> Gostaria de compartilhar e tentar identificar a causa de um problema
>>>> que estou passando em um Script que estou escrevendo em Perl.
>>>>
>>>> Este Script realiza a execução de uma Stored Procedure em um banco DB2
>>>> e importa os dados para um banco Mysql. Realizo um fetcharray e vou
>>>> percorrendo linha a linha, tratando as colunas e adicionando em um array. O
>>>> problema é que caso haja um campo NULL no resultado eu não tenho um retorno
>>>> undef. A variável inicialmente não possui valor, mas caso eu faça um length
>>>> eu tenho um retorno com um valor acima de zero, logo ela também não fica
>>>> undef.
>>>>
>>>> Com esse problema eu não estou conseguindo tratar esses casos para
>>>> campos com valor nulo. Gostaria que alguém me ajudasse caso saibam o que
>>>> pode estar acontecendo.
>>>>
>>>> Fico feliz pela ajuda,
>>>>
>>>> Allisson Lima
>>>>
>>>> _______________________________________________
>>>> Salvador-pm mailing list
>>>> Salvador-pm em pm.org
>>>> http://mail.pm.org/mailman/listinfo/salvador-pm
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Salvador-pm mailing list
>>> Salvador-pm em pm.org
>>> http://mail.pm.org/mailman/listinfo/salvador-pm
>>>
>>>
>>
>>
>>
>> _______________________________________________
>> Salvador-pm mailing list
>> Salvador-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/salvador-pm
>>
>>
>
> _______________________________________________
> Salvador-pm mailing list
> Salvador-pm em pm.org
> http://mail.pm.org/mailman/listinfo/salvador-pm
>
>


-- 
Joenio Costa
- Colivre - Cooperativa de Tecnologias Livres
- Perl Brasil - Comunidade Brasileira de Usuários Perl
- PSL-BA - Projeto Software Livre Bahia
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/salvador-pm/attachments/20140909/f1b07b8e/attachment.html>


Mais detalhes sobre a lista de discussão Salvador-pm