Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Problema al ejecutar sentencia de Oracle

Estas en el tema de Problema al ejecutar sentencia de Oracle en el foro de Bases de Datos General en Foros del Web. Cuando realizo una consulta sobre una base de datos de Oracle, me sale el siguiente mensaje de error: Warning: OCIStmtExecute: ORA-00936: falta una expresión in ...
  #1 (permalink)  
Antiguo 09/01/2004, 06:06
 
Fecha de Ingreso: diciembre-2003
Ubicación: Zaragoza
Mensajes: 30
Antigüedad: 20 años, 11 meses
Puntos: 0
Pregunta Problema al ejecutar sentencia de Oracle

Cuando realizo una consulta sobre una base de datos de Oracle, me sale el siguiente mensaje de error:

Warning: OCIStmtExecute: ORA-00936: falta una expresión in C:\iPlanet\Servers\docs\recoge.php on line 628
Ejecucion no hecha

Las lineas en las que se hace la consulta son las siguientes:

Código PHP:
       $conn OCILogon("USER_SGIT""SGIT""SGIT") or die ('Error'.OCIError());
       
$v_parse OCIParse($conn"SELECT NOMEMPRESA, CODITITOLATM, CODIESTACIO, NOMESTACIO, SUM(VENDESCOMPTAT) FROM EMPRESES, ESTACIONS, VENDES_DIA WHERE CODITITOLPROPI = '0' AND ESTACIONS.CODIESTACIO = VENDES_DIA.LINIAESTACIO AND EMPRESES.CODIEMPRESA = VENDES_DIA.EXPENEDOR GROUP BY NOMEMPRESA, NOMESTACIO, CODITITOLATM, CODIESTACIO HAVING ESTACIONS.CODIESTACIO = '701' OR ESTACIONS.CODIESTACIO = '702' OR ESTACIONS.CODIESTACIO = '774' OR ESTACIONS.CODIESTACIO = '712' AND HAVING VENDES_DIA.CODITITOLATM = '402' OR VENDES_DIA.CODITITOLATM = '403' AND HAVING EMPRESES.CODIEMPRESA = '8')";
       
$exec OCIExecute($v_parse) or die ('Ejecucion no hecha.'.OCIError()); 
Muchas gracias por adelantado por ayudar a este novato
Un saludo,

Última edición por hesisair; 09/01/2004 a las 06:07
  #2 (permalink)  
Antiguo 09/01/2004, 06:18
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Tu pregunta parece estar mas relacionada con la consulta SQL de oracle que con PHP. Y este tipo de consultas va mejor en el foro de bases de datos.

No tengo ni idea de sintaxis del SQL de oracle, pero no me suena bien esta estructura:

HAVING condicion1 AND HAVING condicion2 AND HAVING condicion3

Si es como MySQL, tendria que ser algo como:

HAVING (condicion1) AND (condicion2) AND (condicion3)

Pero ya te digo que eso es en MySQL. Quizas Oracle usa otra sintaxis.

De todas formas, muevo el mensaje a base de datos.

Saludos desde PHP.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 09/01/2004, 06:39
 
Fecha de Ingreso: diciembre-2003
Ubicación: Zaragoza
Mensajes: 30
Antigüedad: 20 años, 11 meses
Puntos: 0
Bien, josemi, gracias porque éso me ha solucionado ese problema, es decir, ahora queda

HAVING (cond) AND (cond)

pero me surge otro problema. Ahora me da el siguiente mensaje de error:

Warning: OCIStmtExecute: ORA-00979: no es una expresión GROUP BY in C:\iPlanet\Servers\docs\recoge.php on line 628

La sentencia SQL es exactamente la misma, con el único cambio anteriormente citado en los HAVING.

Gracias por adelantado, y perdón por ponerlo en el foro equivocado.
Un saludo,
  #4 (permalink)  
Antiguo 09/01/2004, 07:28
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 7 meses
Puntos: 0
El error parece ser los campos de la clausula HAVING.

Todos los campos que se pongan en el having, deben estar en los campos group by, quizá esos having, los puedas poner en la clausula WHERE
  #5 (permalink)  
Antiguo 12/01/2004, 03:36
 
Fecha de Ingreso: diciembre-2003
Ubicación: Zaragoza
Mensajes: 30
Antigüedad: 20 años, 11 meses
Puntos: 0
Muchas gracias, parece que ese si es el problema, al poner todos los campos en el GROUP BY, funciona.
Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:08.