TransWikia.com

Como usar store procedure com Doctrine

Stack Overflow em Português Asked by Fernando Silva on December 5, 2021

Como uso stored procedure com Doctrine ?

Devo usar o createNativeQuery ?

2 Answers

Olá! Obrigado por responder Marcelo!

Encontrei os meios de fazer. Existem dois métodos:

1) Usando createNativeQuery

    $rsm = new ResultSetMapping;
    $em = $this->getEntityManager();
    $sp = "BEGIN pk_web.sp_WEB_CONTATO(:pNOME,:pEMAIL,:pFONE,:pMENSAGEM); END;";
    $query = $em->createNativeQuery($sp,$rsm)
        ->setParameters(array(
            ':pNOME'            => $data['nome'],
            ':pEMAIL'           => $data['email'],
            ':pFONE'            => $data['fone'],
            ':pMENSAGEM'        => $data['mensagem'],
        ));
    $result = $query->getResult();

2) Usando PDO

$connection = $this->getEntityManager()
        ->getConnection()
        ->getWrappedConnection();

    $stmt = $connection->prepare("BEGIN pk_web.sp_WEB_CONTATO(:pNOME,:pEMAIL,:pFONE,:pMENSAGEM,:pMSG); END;");

    $stmt->bindParam(":pNOME",           $data['nome'],      PDO::PARAM_STR, 255);
    $stmt->bindParam(":pEMAIL",          $data['email'],     PDO::PARAM_STR, 255);
    $stmt->bindParam(":pFONE",           $data['fone'],      PDO::PARAM_STR, 255);
    $stmt->bindParam(":pMENSAGEM",       $data['mensagem'],  PDO::PARAM_STR, 8000);

    $stmt->bindParam(":pMSG",$msg,PDO::PARAM_STR, 1000);

    $stmt->execute();

    if($msg) {
        return [
            "success" => true,
            "id" => $msg,
            "nome" => $data['nome'],
            "email" => $data['email']
        ];
    }

No exemplo acima, minha stored procedure esta em uma package do Oracle. A variavel :pmsg recebe o retorno de minha stored procedure.

Answered by Fernando Silva on December 5, 2021

Que eu saiba só usando query nativa, assim:

$results = $this->getConnection()->query("SELECT NOME_DA_PROCEDURE()")
    ->fetchAll();

Answered by Nelson Teixeira on December 5, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP