Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
É possível executar esta função na chamada do Oracle.
Já tentei ela e não rolou, tentei SQL e não rolou, e não consegui utilizar as funções oci_
Preciso listar as informações dos campos
SQL> desc PORT_CLIENTES
Nome Nulo? Tipo
----------------------------------------- -------- --------------
DT_MOVIMENTO NOT NULL DATE
NR_SEQUENCIA NOT NULL NUMBER(9)
CD_CLIENTE NOT NULL NUMBER(9)
NM_PESSOA VARCHAR2(60)
TP_PESSOA CHAR(1)
IN_INATIVO CHAR(1)
NR_CNPJ CHAR(15)
NR_INSCESTL CHAR(18)
NR_CPF CHAR(11)
NR_RG VARCHAR2(20)
VL_FATORLIMITE NUMBER
CD_CEP CHAR(8)
NM_LOGRADOURO VARCHAR2(71)
NR_LOGRADOURO NUMBER(5)
DS_COMPLEMENTO VARCHAR2(65)
DS_REFERENCIA VARCHAR2(60)
NR_CAIXAPOSTAL NUMBER(9)
DS_BAIRRO VARCHAR2(60)
NM_MUNICIPIO VARCHAR2(60)
DS_SIGLAESTADO CHAR(3)
NM_PAIS VARCHAR2(60)
CD_GUIA NUMBER(9)
CD_VENDEDOR NUMBER(6)
CD_REPRESENTANTE NUMBER(9)
DS_EMAIL VARCHAR2(60)
OBS_ENTRADA VARCHAR2(2000)
Observação: É para rodar localhost e estou utilizando o xampp php versão 5.4
Se houver um link de estudo ou se alguém puder postar uma básico de listagem a partir das informações acima eu agradeço, só mais uma coisa a conexão eu já consegui, só não estou conseguindo é saber como listar.
>
utiliza o PDO é sintaxe é igual para todos os DB.
http://www.php.net/manual/en/book.pdo.php
Cara até acessei o manual, consegui o número de linhas, porém quando estou mandando imprimir as informações não exibe o conteúdo, não sei onde estou errando segue o código.
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>";
?>Usa um foreach no lugar do for para o $row
Não esta´rolando... os campos vem vazios, pelo que entendi o cara cria uma rotina sql no oracle que em tese geraria a junção dos dados nesta tabela que ele me mandou, mas não sei se isto apenas funciona dentro do sistema dele e imprime temporário ou o que pode ser, estou ficando doido com isso... pois ei que funciona... alguma luz...
consegui listar assim.... porém todas as linhas tenho as mesmas respostas e não muda as informações retornadas... não sei o que fazer para chamar cada informação já tentei colocar o [$i] mas não rolou...
//Leitura do conteúdo
$query = $pdo->prepare("SELECT
M.NR_SEQUENCIA, M.CD_CLIENTE, P.NM_PESSOA, P.TP_PESSOA,
P.IN_INATIVO, PJ.NR_CNPJ, PJ.NR_INSCESTL, PF.NR_CPF, PF.NR_RG,
LT.VL_FATORLIMITE, EN.CD_CEP, EN.DS_SIGLALOGRAD||' '||
NM_LOGRADOURO as NM_LOGRADOURO, EN.NR_LOGRADOURO,
EN.DS_COMPLEMENTO, EN.DS_REFERENCIA, EN.NR_CAIXAPOSTAL,
EN.DS_BAIRRO, EN.NM_MUNICIPIO, EN.DS_SIGLAESTADO,
EN.NM_PAIS, M.CD_GUIA, M.CD_VENDEDOR, M.CD_REPRESENTANTE,
EM.DS_EMAIL, M.DS_OBS as OBS_ENTRADA
from UBRASCOL.PES_RELACAOVENDA M, UBRASCOL.PES_PESSOA P,
UBRASCOL.VR_PES_FATORLIMITE LT, UBRASCOL.V_PES_ENDFAT EN,
UBRASCOL.VR_PES_EMAIL EM, UBRASCOL.PES_PESJURIDICA PJ,
UBRASCOL.PES_PESFISICA PF");//prepare("SELECT * FROM PORT_CLIENTES");
$query->execute();
$row = $query->fetch();
echo "!!".$total = count( $row );
echo"<br/>";
for($i=0; $i<$total; $i++){
echo"- ".$row['NR_SEQUENCIA']." ";
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"<br/>";
}$result = $query->fetchAll(PDO::FETCH_OBJ);
foreach ($result as $row){
echo $row->exemplo;
}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;$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 /
?>
utiliza o PDO é sintaxe é igual para todos os DB.
http://www.php.net/manual/en/book.pdo.php