[Cascavel-pm] DBD::ODBC, escape sequences e placeholders

Eden Cardim edencardim em gmail.com
Quinta Novembro 26 16:55:33 PST 2009


>>>>> "Alceu" == Alceu R de Freitas <glasswalk3r em yahoo.com.br> writes:
    Alceu> Vou passar parte do código apenas por desencargo. Eu já fiz
    Alceu> vários testes, mas o erro obtido ocorre mesmo passando
    Alceu> valores undef. A documentação orienta a passar datas no
    Alceu> formato AAAA-MM-DD, mas mesmo assim não funciona.

Basicamente, o DBI não introspecta nenhum dos valores passados, então
você precisa formatar os dados manualmente antes de passar pro backend,
pra lidar com quoting, palavras-chave, etc.
    
    Alceu> data_criacao = { d ? }, data_atualizacao = { d ? },

data_criacao = { d '?' }, data_atualizacao = { d '?' }

se você fizar $date = '2009-01-01' e passar $date pro bind vai ficar:

data_criacao = { d '2009-01-01' }, data_atualizacao = { d '2009-01-01' }

que é a sintaxe que o backend espera.

    Alceu> Agora se eu montar a query desta forma (usando valores
    Alceu> hardcoded):

    Alceu> UPDATE t_pm_projeto SET nom_projeto = ?, data_criacao = { d
    Alceu> '2008-01-15' }, data_atualizacao = { d '2009-22-11' },
    Alceu> cod_status = ?, nom_produto = ?, num_pacientepotencialmes =
    Alceu> ?, num_pacientemesatual = ?, nom_setor = ?  WHERE cod_projeto
    Alceu> = ?

    Alceu> aí os dados são atualizados corretamente.

tem certeza que '2008-01-15' e '2009-22-11' atualiza corretamente? uma
dessas duas datas não são válidas, e talvez seja disso que o backend
está reclamando.

-- 
   Eden Cardim       Need help with your Catalyst or DBIx::Class project?
  Code Monkey                    http://www.shadowcat.co.uk/catalyst/
 Shadowcat Systems Ltd.  Want a managed development or deployment platform?
http://edenc.vox.com/            http://www.shadowcat.co.uk/servers/



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