QSqlQuery chamar função PostgreSQL



  • Eu tentei segui a documentação da classe QSqlQuery, segui o exemplo que mostra como executar stored procedures que em PostgreSQL são funções. Na documentação mostra o seguinte exemplo:

    @ QSqlQuery query;
    query.prepare("CALL AsciiToInt(?, ?)");
    query.bindValue(0, "A");
    query.bindValue(1, 0, QSql::Out);
    query.exec();
    int i = query.boundValue(1).toInt(); // i is 65@

    No meu caso isso não funcionou, ou seja, usando a palavra CALL. Só deu certo colocando o select completo.

    @ action.prepare("select operational."f_InsertTechnical"(?, ?, ?)");
    action.bindValue(0, "Matheus Saraiva da Silva");
    action.bindValue(1, "matheus.saraiva@house.com");
    action.bindValue(2, "+554941414141");
    @

    Reparem que no meu banco a função f_InsertTechnical não está no esquema padrão, ou seja o public está um um esquema chamado operational, sendo assim no select o nome da função deve ser precedido do nome do esquema. Será que isso está influenciando no funcionamento do CALL?
    Eu tentei incluir o nome do esquema ("CALL operational."f_InsertTechnical"(?, ?, ?)") mas sem sucesso.



  • Acho que não está relacionado ao Qt, mas sim ao Pg.
    Veja "aqui":http://stackoverflow.com/questions/1953326/how-to-call-a-function-postgresql

    Mas não sou um profundo conhecedor de Pg para ter certeza.

    Dei uma olhada nos fontes do driver do Qt, e não vi nada que trate os comandos do lado do Qt. O QSqlDriver repassa a string diretamente para a lib do Pg.

    Qual tutorial você viu a chamada à CALL?



  • Ta na doc do QSqlQuery. Ví agora.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.