Ir para conteúdo

POWERED BY:

Arquivado

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

gbxsouza

SELECT no ORACLE

Recommended Posts

Gostaria que alguém me ajudasse a realizar uma pesquisa na base

de acordo com a condição em um text no formulário.

 

Quando o usuário preencher o campo NOME REQUENTE OU Nº PROCESSO

e clicar no botão PESQUISAR realiza a seguinte consulta, mas tá rolando

uns erros.

 

<?php

 

// VERIFICA SE O FORMULÁRIO FOI SUBMETIDO

if($HTTP_POST_VARS["NOME_REQUERENTE"] or $HTTP_POST_VARS["NUMERO_PROCESSO"]) {

 

//CONECTA AO BANCO DE DADOS ORACLE

include "conecta_ora.php";

 

//CLÁUSULA SQL

$sql = "SELECT * FROM CONTROLE, ANDAMENTO, SUBSETOR";

$sql .= " WHERE NUMERO_PROCESSO = '$NUMERO_PROCESSO'";

$sql .= " OR NOME_REQUERENTE = '$NOME_REQUERENTE'";

 

//ANALISA

$sql = ociparse($ora_conecta,$sql) or die("ERRO NA ANÁLISE DA CLÁUSULA SQL");

 

//EXECUTA O SQL

ociexecute($sql,OCI_DEFAULT);

 

//EXIBE OS RESULTADOS

 

WHILE(Ocifetch($sql)) {

echo "Nº Processo: " .ociresult($sql,"NUMERO_PROCESSO")."

<br>";

 

 

}

 

//LIBERA DA MEMÓRIA

ocifreestatement($sql);

//DESCONECTA

ocilogoff($sql);

 

}

 

ELSE {

 

?>

 

Aguardo ajuda,

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

 

<?php

if (isset($POST["NOME_REQUERENTE"]) or isset($POST["NUMERO_PROCESSO"])) {

 

include "conecta_ora.php";

 

$sql = "SELECT * FROM CONTROLE, ANDAMENTO, SUBSETOR WHERE NUMERO_PROCESSO = '{$POST["NUMERO_PROCESSO"]}' OR NOME_REQUERENTE = '{$POST["NOME_REQUERENTE"]}'";

$stmt = ociparse($ora_conecta,$sql) or die("ERRO NA ANÁLISE DA CLÁUSULA SQL");

 

ociexecute($stmt, OCI_DEFAULT);

WHILE(ocifetch($stmt)) {

echo "Nº Processo: " .ociresult($stmt,"NUMERO_PROCESSO")."

";

}

 

ocifreestatement($stmt);

ocilogoff(???);

 

} else {

?>

??? - ocilogoff deve receber a variavel de logon do oracle, provavelmente declarada dentro do seu arquivo conecta_ora.php

 

Sua consulta parece ser bem grande, não estão faltando algumas junções?

 

Se não melhorar a situação, poste as mensagens de erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

 

<?php

if (isset($POST["NOME_REQUERENTE"]) or isset($POST["NUMERO_PROCESSO"])) {

 

include "conecta_ora.php";

 

$sql = "SELECT * FROM CONTROLE, ANDAMENTO, SUBSETOR WHERE NUMERO_PROCESSO = '{$POST["NUMERO_PROCESSO"]}' OR NOME_REQUERENTE = '{$POST["NOME_REQUERENTE"]}'";

$stmt = ociparse($ora_conecta,$sql) or die("ERRO NA ANÁLISE DA CLÁUSULA SQL");

 

ociexecute($stmt, OCI_DEFAULT);

WHILE(ocifetch($stmt)) {

echo "Nº Processo: " .ociresult($stmt,"NUMERO_PROCESSO")."<br>";

}

 

ocifreestatement($stmt);

ocilogoff(???);

 

} else {

?>

??? - ocilogoff deve receber a variavel de logon do oracle, provavelmente declarada dentro do seu arquivo conecta_ora.php

 

Sua consulta parece ser bem grande, não estão faltando algumas junções?

 

Se não melhorar a situação, poste as mensagens de erro.

 

Qual e a o Erro amigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda, mas ainda não foi o suficiente.

 

Quando clico no botão Consultar, simplesmente nada acontece. Pq isset? Após

este erro tentei substitui a primeira linha de vcs pela minha e deu os seguintes erros:

 

if (isset($POST["NOME_REQUERENTE"]) or isset($POST["NUMERO_PROCESSO"])) { = if($HTTP_POST_VARS["NOME_REQUERENTE"] or $HTTP_POST_VARS["NUMERO_PROCESSO"]) {

 

Notice: Undefined variable: POST in c:\arquivos de programas\easyphp1-7\www\protocolo.php on line 32

 

Notice: Undefined variable: POST in c:\arquivos de programas\easyphp1-7\www\protocolo.php on line 32

 

Warning: ociexecute(): OCIStmtExecute: ORA-00918: coluna definida de maneira ambígua in c:\arquivos de programas\easyphp1-7\www\protocolo.php on line 38

 

Warning: ocifetch(): OCIFetch: ORA-24374: a definição não foi feita antes da extração ou execução e extração in c:\arquivos de programas\easyphp1-7\www\protocolo.php on line 41

 

Se puderem continuar me ajudando....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use $_POST e não $POST.Na tua select, você está lendo três tabelas e faz o where de NUMERO_PROCESSO e NOME_REQUERENTE.Estes campos estão em qual tabela ?Não existe relação entre estas tabelas ? Dê uma olhada nisto e poste novamente os erros se continuarem.[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usando o $_POST, ocorreu o seguinte erro:

 

Warning: ociexecute(): OCIStmtExecute: ORA-00918: coluna definida de maneira ambígua in c:\arquivos de programas\easyphp1-7\www\protocolo.php on line 41

 

Warning: ocifetch(): OCIFetch: ORA-24374: a definição não foi feita antes da extração ou execução e extração in c:\arquivos de programas\easyphp1-7\www\protocolo.php on line 44

 

São as seguintes linhas:

 

ociexecute($stmt,OCI_DEFAULT);

 

WHILE(ocifetch($stmt)) {

 

Essencialmente, são apenas duas tabelas: CONTROLE e ANDAMENTO; o campo em comum é NUMERO_PROCESSO.

Eu tenho esse sistema em Delphi, mas preciso disso via Web. Porém estou começando os

estudos de PHP agora... rsrsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, acho que seu problema já não é mais php e nem oracle, mas sql.coloque isso na clausula where:

controle.numero_processo = andamento.numerO_processo

Esqueça a terceira tabela por enquanto.Se quiser tirar mesmo sua dúvida faz um SELECT * FROM controle e vê se dá resultado.Tenta aí, qualquer coisa posta novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pow, antes de tudo isso eu já havia testado os selects direto, sem formulário, nem nada. E deu tudo OK.

O problema tá sendo ele executar de acordo com o formulário de pesquisa. Continua dando erro no comando:

ociexecute($stmt,OCI_DEFAULT);; e no comando: WHILE(ocifetch($stmt)) {

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz outro teste então, pra ver se a select montada com o form está correta ou não.

 

Após esta linha:

$sql = "SELECT * FROM CONTROLE, ANDAMENTO, SUBSETOR WHERE NUMERO_PROCESSO = '{$POST["NUMERO_PROCESSO"]}' OR NOME_REQUERENTE = '{$POST["NOME_REQUERENTE"]}'";

Faça isto:

echo $sql;

Copie e cole este codigo, e tente executar no oracle.

 

Pergunta: Porque está usando as chaves entre os parâmetros ? Tente tirá-las.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem walace...O erro foi meu, informei que ele deveria usar $POST, quando deveria ter informado para usar $_POST.

Não dá nada Prog !!!Acontece nos melhores fóruns !!!! rsrsrs

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.