Outro dia, deparei-me com alguns problemas ao utilizar o ADOdb. Criei algumas stored procedures (sp's) no banco de dados (MySQL) e ao chamá-las através do ADOdb, algumas mensagens de erro eram retornadas.
A primeira delas retornava a seguinte mensagem de erro:
Procedure mySP can't return a result set in the given context.
Referia-se a CLIENT_MULTI_RESULTS estar desabilitada. Como a sp executa comandos e estes produzem mais de uma saída na tela, o ADOdb trata-os como sendo mais de um RecordSet. Após algum tempo pesquisando, encontrei a maneira correta de fazê-la:
$flags = 131074;
$dsn = "mysql://user:$pwd@localhost/mydb?persist&clientflags=$flags";
$conn = ADONewConnection($dsn);
Em seguida veio outra mensagem:Commands out of sync
Esta refere-se à execução da SP. Para resolver, configure a variável global $ADODB_COUNTRECS
para FALSE
.
Há duas maneiras para resolver.
1. No caso de apenas o primeiro grupo de registros interessar a você, você pode descartá-los usando o método Close() da conexão (esta não é a maneira mais elegante mas resolve).
2. Chamar o método NextRecordSet() para recuperar o próximo conjunto de resultados e dar o devido tratamento ao próximo grupo de registros.
Estas foram as principais dificuldades que encontrei até agora ao utilizar sp's junto ao MySQL com o ADOdb. Alguém mais tem alguma situação com outro SGBD utilizando o ADOdb que queira compartilhar conosco?
Nenhum comentário:
Postar um comentário