PHP and Oracle Error - oci_execute

0

I have a packcage with the following SP:

procedure sp_WEB_PECAS_OBJTV_LOJA(  pPECAS_OBJTV_LOJA_ID  in   WEB_PECAS_OBJTV_LOJA.PECAS_OBJTV_LOJA_ID%type,
                                pPECAS_OBJTV_LOJA_COD_EMP         in WEB_PECAS_OBJTV_LOJA.PECAS_OBJTV_LOJA_COD_EMP%type,
                                pPECAS_OBJTV_LOJA_DIAS_UTEIS      in WEB_PECAS_OBJTV_LOJA.PECAS_OBJTV_LOJA_DIAS_UTEIS%type, 
                                pPECAS_OBJTV_LOJA_OBJTV           in WEB_PECAS_OBJTV_LOJA.PECAS_OBJTV_LOJA_OBJTV%type,
                                pPECAS_OBJTV_LOJA_MES             in WEB_PECAS_OBJTV_LOJA.PECAS_OBJTV_LOJA_MES%type,
                                pMSG                              out varchar2) is

 vVERIFICA_DUPLICATA_OBJETIVO number := 0;
 vOBJETIVO_LOJA                        number := 0;
 vOBJETIVO                           number := 0;
 vOBJETIVOID                         number := 0;
 vWEB_PECAS_OBJTV_LOJA         number := 0;
 vSEQUEN                      number := 0;

BEGIN

-- Verifica se não existe um objetivo cadastrado para a loja no mes e ano informados
SELECT COUNT(PECAS_OBJTV_LOJA_COD_EMP) INTO vVERIFICA_DUPLICATA_OBJETIVO
FROM WEB_PECAS_OBJTV_LOJA
WHERE PECAS_OBJTV_LOJA_COD_EMP = pPECAS_OBJTV_LOJA_COD_EMP
AND PECAS_OBJTV_LOJA_MES = TO_DATE(pPECAS_OBJTV_LOJA_MES,'dd/mm/yyyy hh24:mi')
AND ROWNUM <=1;

-- Se existe objetivo já cadastrado 
IF vVERIFICA_DUPLICATA_OBJETIVO != 0 THEN

     SELECT * INTO vOBJETIVO_LOJA
      FROM (SELECT COUNT(PECAS_OBJTV_LOJA_ID) FROM WEB_PECAS_OBJTV_LOJA
            WHERE  
                   PECAS_OBJTV_LOJA_ID = pPECAS_OBJTV_LOJA_ID  
                             AND PECAS_OBJTV_LOJA_COD_EMP = pPECAS_OBJTV_LOJA_COD_EMP
                             AND PECAS_OBJTV_LOJA_DIAS_UTEIS = pPECAS_OBJTV_LOJA_DIAS_UTEIS
                             AND PECAS_OBJTV_LOJA_OBJTV = pPECAS_OBJTV_LOJA_OBJTV
                             AND PECAS_OBJTV_LOJA_MES = pPECAS_OBJTV_LOJA_MES
                  )
     WHERE ROWNUM <= 1;
ELSE
    vWEB_PECAS_OBJTV_LOJA := 1;
END IF;     

-- Verifica se todos os dados foram informados
IF(vOBJETIVO_LOJA > 0 OR (pPECAS_OBJTV_LOJA_COD_EMP IS NULL 
   AND pPECAS_OBJTV_LOJA_COD_EMP IS NULL AND pPECAS_OBJTV_LOJA_DIAS_UTEIS IS NULL 
         AND pPECAS_OBJTV_LOJA_OBJTV IS NULL AND pPECAS_OBJTV_LOJA_MES IS NULL))    THEN

    pMSG := 'Dados insuficientes! =/ ';

ELSE
    -- Pesquisa o Objetivo da Loja pelo codigo da loja e mes do objetivo    
    SELECT COUNT(*) INTO vOBJETIVO FROM WEB_PECAS_OBJTV_LOJA WHERE PECAS_OBJTV_LOJA_COD_EMP = pPECAS_OBJTV_LOJA_COD_EMP AND PECAS_OBJTV_LOJA_MES = pPECAS_OBJTV_LOJA_MES;
    -- pesquisa o Objetivo da Loja pelo ID
    SELECT COUNT(*) INTO vOBJETIVOID FROM WEB_PECAS_OBJTV_LOJA WHERE PECAS_OBJTV_LOJA_ID = pPECAS_OBJTV_LOJA_ID;

    --Nao existe nenhum objetivo cadastrado para essa loja nesse mes e nem com o id informado
    if(pPECAS_OBJTV_LOJA_ID IS NULL OR pPECAS_OBJTV_LOJA_ID = 0) THEN
        vWEB_PECAS_OBJTV_LOJA := 0;
    ELSIF (vOBJETIVO > 0) THEN
        vWEB_PECAS_OBJTV_LOJA := 2;
    ELSIF(vOBJETIVOID > 0) THEN
        vWEB_PECAS_OBJTV_LOJA := 3;
    END IF;

    -- Senao existir nenhum objetivo para a empresa e mes informados, vamos salvar os dados no banco de dados
    IF (vWEB_PECAS_OBJTV_LOJA = 0) THEN
        -- Pega a sequence da tabela
        vSEQUEN := SEQ_WEB_PECAS_OBJTV_LOJA.NEXTVAL;

        INSERT INTO WEB_PECAS_OBJTV_LOJA
        (
            PECAS_OBJTV_LOJA_ID,
            PECAS_OBJTV_LOJA_COD_EMP,
            PECAS_OBJTV_LOJA_DIAS_UTEIS,
            PECAS_OBJTV_LOJA_OBJTV,
            PECAS_OBJTV_LOJA_MES 
        ) VALUES (
            vSEQUEN,
            pPECAS_OBJTV_LOJA_COD_EMP,
            pPECAS_OBJTV_LOJA_DIAS_UTEIS,
            pPECAS_OBJTV_LOJA_OBJTV,
            TO_DATE(pPECAS_OBJTV_LOJA_MES,'dd/mm/yyyy hh24:mi')             
        );

        COMMIT;
        pMSG := pPECAS_OBJTV_LOJA_ID;

    -- Se existir o objetivo cadastrado, então vamos editar os dados
    ELSIF (vWEB_PECAS_OBJTV_LOJA > 0) THEN
        UPDATE WEB_PECAS_OBJTV_LOJA
            SET  
                PECAS_OBJTV_LOJA_COD_EMP      = pPECAS_OBJTV_LOJA_COD_EMP,
                PECAS_OBJTV_LOJA_DIAS_UTEIS = pPECAS_OBJTV_LOJA_DIAS_UTEIS,
                PECAS_OBJTV_LOJA_OBJTV        = pPECAS_OBJTV_LOJA_OBJTV,
                PECAS_OBJTV_LOJA_MES            = to_date(pPECAS_OBJTV_LOJA_MES,'dd/mm/yyyy hh24:mi')
            WHERE PECAS_OBJTV_LOJA_ID     = pPECAS_OBJTV_LOJA_ID;

        COMMIT;

         pMSG := 'Objetivo de Loja alterado com sucesso! =)';  

    END IF;

END IF;
END sp_WEB_PECAS_OBJTV_LOJA;

My php code is as follows:

     $sql = "begin
                  pk_web.sp_web_pecas_objtv_loja(ppecas_objtv_loja_id => :ppecas_objtv_loja_id,
                                                 ppecas_objtv_loja_cod_emp => :ppecas_objtv_loja_cod_emp,
                                                 ppecas_objtv_loja_dias_uteis => :ppecas_objtv_loja_dias_uteis,
                                                 ppecas_objtv_loja_objtv => :ppecas_objtv_loja_objtv,
                                                 ppecas_objtv_loja_mes => :ppecas_objtv_loja_mes,
                                                 pmsg => :pmsg);
                  end;";

        $where = array(
            ':ppecas_objtv_loja_cod_emp'        => $vetor['PECAS_OBJTV_LOJA_COD_EMP'],
            ':ppecas_objtv_loja_dias_uteis'     => $vetor['PECAS_OBJTV_LOJA_DIAS_UTEIS'],
            ':ppecas_objtv_loja_objtv'          => $vetor['PECAS_OBJTV_LOJA_OBJTV'],
            ':ppecas_objtv_loja_mes'            => $vetor['PECAS_OBJTV_LOJA_MES']
        );

        /*Common::printPre($vetor);
        Common::printPre($sql);*/
        //exit;
         if($retorno = $this->db->inserirObjetivo($sql,$where)) {
             return $retorno;
         }

Method code InsertObjective

   public function inserirObjetivo($script,$valores = array())
{

    $stmt = oci_parse($this->conn, $script);

    oci_bind_by_name($stmt,':ppecas_objtv_loja_cod_emp'     ,$valores[':ppecas_objtv_loja_cod_emp'],20);
    oci_bind_by_name($stmt,':ppecas_objtv_loja_dias_uteis'  ,$valores[':ppecas_objtv_loja_dias_uteis'],3);
    oci_bind_by_name($stmt,':ppecas_objtv_loja_objtv'       ,$valores[':ppecas_objtv_loja_objtv'],200);
    oci_bind_by_name($stmt,':ppecas_objtv_loja_mes'         ,$valores[':ppecas_objtv_loja_mes'],20);

    oci_bind_by_name($stmt,":pMSG",$msg,1000);

    if(oci_execute($stmt,OCI_COMMIT_ON_SUCCESS)) {
        return $msg;
    } else {
        /*Common::printPre($script);
        echo "<br>";*/
        $erro = oci_error($this->conn);
        oci_free_statement($stmt);
        return $erro['message'];

    }
}

And when I run this damn I get the following error:

  

Warning: oci_execute (): in   /var/www/intranet/modulesWeb/peca/objetivo/system/Oracle.php on line   179

The line 179 in the case is the line below in the method insertObjective:

if(oci_execute($stmt,OCI_COMMIT_ON_SUCCESS)) {
        return $msg;
    }

The SP works correctly. I have already done several tests. I can not find the error .. since the only error message I have is this ... Unfortunately, I do not have access to the apache log of that server ...

    
asked by anonymous 29.12.2015 / 21:18

0 answers