Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jazara

Select com php no Oracle

Recommended Posts

Olá pessoal, consegui criar a conexão do Oracle via php, porém não consigo dar um select , não sei nem como criar.

 

Gostaria de:

- um comando equivalente a mysql_num_rows($sql);

- Um comando equivalente a mysql_fetch_array($sql);

 

Se houver um tutorial online, para estudo, pois só sei usar mysql...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui a conexão e sei que está quase certo a configuração:

 

echo $BANCO="SELECT * FROM PORT_CLIENTES";
$stat = oci_parse($conn, $BANCO);
oci_execute($stat,OCI_DEFAULT);
$Cl= oci_fetch_array($stat, OCI_ASSOC+OCI_RETURN_NULLS);
$ESTOQUE=0;
while ($Cl) { $ESTOQUE++; }
echo $ESTOQUE;
Porém estou recebendo esta resposta e não sei como resolver

 

Warning: oci_execute(): ORA-01843: not a valid month in C:\xampp\htdocs\brascol\teste\teste.php on line 47
Warning: oci_fetch_array(): ORA-24374: define not done before fetch or execute and fetch in C:\xampp\htdocs\brascol\teste\teste.php on line 49
0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer um select ou insert?

Este exemplo consulta e exibir:

 

<?php

$user = 'system';
$password = 'XXXXXX'; // sua senha
$conn = oci_connect("$user","$password","localhost/XE");
$stid = oci_parse($conn, "ALTER SESSION SET NLS_NUMERIC_CHARACTERS = '. ,'");
oci_execute($stid, OCI_DEFAULT);
$conn = oci_pconnect("custo_ti","200230","localhost/XE");
$stid = oci_parse($conn,"SELECT * FROM demanda");
oci_execute($stid, OCI_NO_AUTO_COMMIT);
while (($row = oci_fetch_array($stid, OCI_BOTH)) != false)
{
echo $row[0];
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mudei para linha de comando para de PDO, porém até consigo gerar a listagem, contar campos, porém todos os campos estão vazios, não consigo chamar as informações. O manual é confuso e limitado e os exemplos web estão muito difíceis de achar algo explicativo...


<?php


$user = "xxx";

$pass = "xxx";

$name = "xxx";

$host = "xxx";


//NÃO ALTERE NADA DESTE LINHA, NEM MESMO ESPAÇOS

$tns = " (DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP) (HOST = ".$host.")(PORT = 1521)))(CONNECT_DATA = (SID = ".$name.")))";


$pdo = new PDO("oci:dbname=".$tns,$user,$pass);

if(!$pdo){ die('Erro ao criar a conexão'); }

else{

echo "conectado -> ".date("H:i:s");

echo"<br>";

}


//Leitura do conteúdo

$query = $pdo->prepare("SELECT * FROM PORT_CLIENTES");

$query->execute();


$row = $query->fetch();

$total = count( $row );

for($i=0; $i<$total; $i++){


echo $i."<br/>";


echo"- ".$row["NR_SEQUENCIA"]." ";

echo"- ".$row['CD_CLIENTE']." ";

echo"- ".$row['NM_PESSOA']."<br/>";

echo"- ".$row['TP_PESSOA']." ";

echo"- ".$row['IN_INATIVO']." ";

echo"- ".$row['NR_CNPJ']."<br/>";

echo"- ".$row['NR_INSCESTL']." ";

echo"- ".$row['NR_CPF']." ";

echo"- ".$row['NR_RG']."<br/>";

echo"- ".$row['VL_FATORLIMITE']." ";

echo"- ".$row['CD_CEP']." ";

echo"- ".$row['NM_LOGRADOURO']."<br/>";

echo"- ".$row['NR_LOGRADOURO']." ";

echo"- ".$row['DS_COMPLEMENTO']." ";

echo"- ".$row['DS_REFERENCIA']."<br/>";

echo"- ".$row['NR_CAIXAPOSTAL']." ";

echo"- ".$row['DS_BAIRRO']." ";

echo"- ".$row['NM_MUNICIPIO']."<br/>";

echo"- ".$row['DS_SIGLAESTADO']." ";

echo"- ".$row['NM_PAIS']." ";

echo"- ".$row['CD_GUIA']."<br/>";

echo"- ".$row['CD_VENDEDOR']." ";

echo"- ".$row['CD_REPRESENTANTE']." ";

echo"- ".$row['DS_EMAIL']."<br/>";

echo"- ".$row['OBS_ENTRADA'];

echo"<br><br/>";

}

echo "<br> Resultados obtidos $i";


echo"<br>";



?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado a todos que tentaram colaborar, consegui chegar ao resultado com OCI_ em PDO não rola para conversar com Oracle.

Os problemas que estava enfrentando eram ligados do lado do pessoal do Banco Oracle que em sua view criava uma regra ou condição na data do banco e então tínhamos conflito de leitura de datas no php, a solução foi deixar a impressão livre de todas as datas na view e do lado do PHP sim setar a data no formato do banco Oracle com a regra de impressão só da data atual.

 

Abaixo o script espero que ajude o pessoal.

<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
ini_set('memory_limit', '64M');
// CONFIG
$ppq = 500;
$oracleUser = "xxxx";
$oraclePass = "xxxx";
$oracleHost= "xxxx";
$oracleNomeBD = "xxxx";
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', '1');
$mensagens = array();
// TEMPO DE INICIO DO PROCESSO
$TIME_INI = time();
echo "INICIANDO PROCESSO DE EXPORTAÇÃO<br>\n";
echo "--------------------------------<br>\n";
// CONFIG TNS
$ora_bd = "(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)
(HOST=$oracleHost)(PORT=1521)
)
)
(CONNECT_DATA=(SERVICE_NAME=$oracleNomeBD))
)";
// FAZ A CONEXÃO COM O ORACLE
if ($conn = oci_connect($oracleUser,$oraclePass,$ora_bd)){
echo "conexao efetuada<br>\n";
}else {
echo "0040 - ERRO AO CONECTAR-SE AO ORACLE";
array_push($mensagens, "0040 - ERRO AO CONECTAR-SE AO ORACLE");
}
// SELECIONA OS PRODUTOS PARA INCLUSÃO NO TXT
$SQL = "SELECT * from PORT_CLIENTES WHERE dt_movimento = '".date("d/M/Y")."'";
$stat = oci_parse($conn, $SQL);
oci_execute($stat);
$posicao=0;
while ($row= oci_fetch_array($stat, OCI_ASSOC+OCI_RETURN_NULLS)) {
$posicao++;
echo"<div style='width:3000px;'>";
echo"- ".$row['NR_SEQUENCIA']." ";
echo"- ".$row['DT_MOVIMENTO']." ";
echo"- ".$row['CD_CLIENTE']." ";
echo"- ".$row["NM_PESSOA"];
echo"- ".$row['TP_PESSOA']." ";
echo"- ".$row['IN_INATIVO']." ";
echo"- ".$row['NR_CNPJ']."";
echo"- ".$row['NR_INSCESTL']." ";
echo"- ".$row['NR_CPF']." ";
echo"- ".$row['NR_RG']."";
echo"- ".$row['VL_FATORLIMITE']." ";
echo"- ".$row['CD_CEP']." ";
echo"- ".$row['NM_LOGRADOURO']."";
echo"- ".$row['NR_LOGRADOURO']." ";
echo"- ".$row['DS_COMPLEMENTO']." ";
echo"- ".$row['DS_REFERENCIA']."";
echo"- ".$row['NR_CAIXAPOSTAL']." ";
echo"- ".$row['DS_BAIRRO']." ";
echo"- ".$row['NM_MUNICIPIO']."";
echo"- ".$row['DS_SIGLAESTADO']." ";
echo"- ".$row['NM_PAIS']." ";
echo"- ".$row['CD_GUIA']."";
echo"- ".$row['CD_VENDEDOR']." ";
echo"- ".$row['CD_REPRESENTANTE']." ";
echo"- ".$row['DS_EMAIL']."";
echo"- ".$row['OBS_ENTRADA'];
echo"</div>";
}
echo"Atualizado:".date("H:i:s")." - Linhas $posicao";
/* FUNCIONAL EM 26-06-2014 */
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.