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

Error ora-00905

Estas en el tema de Error ora-00905 en el foro de Oracle en Foros del Web. codigo sql ------------ @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SET @HORA_INI = ( SELECT CAST ( ( CASE   WHEN LEFT ( HORA_INICIO , 1 ...
  #1 (permalink)  
Antiguo 12/12/2013, 10:03
 
Fecha de Ingreso: noviembre-2011
Ubicación: lima
Mensajes: 19
Antigüedad: 13 años
Puntos: 0
Error ora-00905

codigo sql
------------
Código SQL:
Ver original
  1. SET @HORA_INI = (SELECT CAST((CASE  WHEN LEFT(HORA_INICIO,1) = '+' THEN
  2.                                                 DATEADD(MINUTE,DATEPART (MINUTE,CONVERT ( TIME, SUBSTRING(HORA_INICIO,2,5))),
  3.                                                 CASE TIPO WHEN 2 THEN @RANGO2  
  4.                                                 WHEN 1 THEN @RANGO1
  5.                                                 ELSE
  6.                                                 @RANGO1 END)
  7.                                                
  8.                                                 ELSE
  9.                                                 CASE  WHEN @RANGO1 < = CAST( CASE WHEN  HORA_QUIEBRE > HORA_INICIO THEN
  10.                                                 DATEADD(DAY,1,@FECHA)
  11.                                                 ELSE
  12.                                                 @FECHA END AS DATETIME)+CAST(HORA_INICIO AS DATETIME) THEN
  13.                                                
  14.                                                 CAST(CASE WHEN HORA_QUIEBRE  > HORA_INICIO THEN
  15.                                                 DATEADD(DAY,1,@FECHA)
  16.                                                 ELSE
  17.                                                 @FECHA END  AS DATETIME)+CAST(HORA_INICIO AS DATETIME)
  18.                                                
  19.                                                 ELSE
  20.                                                 CASE WHEN TIPO = 2 THEN  @RANGO1
  21.                                                
  22.                                                 WHEN TIPO = 1 THEN  CAST(CASE WHEN HORA_QUIEBRE  > HORA_INICIO THEN
  23.                                                 DATEADD(DAY,1,@FECHA)
  24.                                                 ELSE
  25.                                                 @FECHA END  AS DATETIME)+CAST(HORA_INICIO AS DATETIME)
  26.                                                
  27.                                                 ELSE @RANGO1  
  28.                                                
  29.                                                 END  
  30.                                                                             END
  31.                                                                 END)AS DATETIME)                                                                                   
  32.                                                      FROM @vTABLA_ACTIVIDADESHORARIO WHERE ID = @J
  33.                                                      )





codigo ORALCE
Código SQL:
Ver original
  1. -----------------------------------*---
  2.  
  3.              
  4.               SELECT(CASE WHEN OHORA_INICIO = '+' THEN
  5.                           (SELECT SUBSTR(TO_CHAR(A.HORA_INICIO),4,2)+1
  6.                                   FROM TMP_vTABLA_ACTIVIDADESHORARIO A
  7.                                   WHERE A.ID_TABLA=pIDTABLA AND
  8.                                    ROWNUM=1),
  9.                    CASE D.TIPO  WHEN 2 THEN RANGO2 WHEN 1 THEN RANGO1
  10.                  
  11.                   ELSE RANGO1 END
  12.                    
  13.                   ELSE
  14.                    CASE WHEN RANGO1 <=(CASE WHEN HORA_QUIEBRE > HORA_INICIO THEN
  15.                                           (SELECT TO_DATE(pFECHA,'DD/MM/YYYY')+1 FROM DUAL)
  16.                                          
  17.                                           ELSE pFECHA END)+(HORA_INICIO)THEN
  18.                                          
  19.                                           (CASE WHEN HORA_QUIEBRE  > HORA_INICIO THEN
  20.                                             (SELECT TO_DATE(pFECHA,'DD/MM/YYYY')+1 FROM DUAL)
  21.                                            ELSE
  22.                                             pFECHA END) +  (HORA_INICIO)
  23.                                             ELSE
  24.                                              
  25.                                             CASE WHEN TIPO =2 THEN RANGO1
  26.                                                 WHEN TIPO=1 THEN (CASE WHEN HORA_QUIEBRE  > HORA_INICIO THEN
  27.                                                                 (SELECT TO_DATE(pFECHA,'DD/MM/YYYY')+1 FROM DUAL)
  28.                                                                  ELSE
  29.                                                                   pFECHA END) +  (HORA_INICIO)
  30.                                                                  ELSE
  31.                                                                    RANGO1
  32.                                                                    END
  33.                                           END
  34.                                          
  35.                                           END)INTO OpFECHA
  36.                                            FROM TMP_vTABLA_ACTIVIDADESHORARIO D WHERE D.ID=J AND D.ID_TABLA=PIDTABLA;

estoy pasando un procedimiento q esta en sql a oracle pero tengo un erro no se en que estoy fallando o si lo q estoy haciendo noe s la forma correcta saludos cordiales

Última edición por gnzsoloyo; 12/12/2013 a las 10:38
  #2 (permalink)  
Antiguo 12/12/2013, 10:41
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Error ora-00905

Ambos códigos son "SQL", ya que SQL es el lenguaje de consultas.
En todo caso estás pasando un script desde SQL Server a Oracle, que no es lo mismo.
En cualquier caso lo primero que debes hacer al pasar de un DBMS a otro es sencillamente olvidarte de todos los métodos usandos en el primero, plantear el concepto básico de lo que quieres obtener, tomar el manual de referencia del segundo, verificar cómo se hacen las operaciones en el nuevo DBMS y escribirlo desde cero.
Si intentas "traducir" cosas no lo lograrás. No todo es compatible, y no hay un estándar de lenguaje procedural.

Dicho esto, ¿qué se supone que calcula o busca la operación que debes construir?
Dilo con un lenguaje simple, no describas de momento funcionalidades de SQL sino qué es lo que debes obtener como resultado, partiendo de qué datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 08:03.