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

Error con pl sql

Estas en el tema de Error con pl sql en el foro de Oracle en Foros del Web. BUENAS TARDES AMIGOS NECESITIO POR FAVOR QUE ME COLABOREN CON ESTE PROBLEMA ; TENGO BUCLE Y DENTRO DE ESTE BUCLE SALE UNA CONSULTA A LA ...
  #1 (permalink)  
Antiguo 09/06/2009, 14:43
 
Fecha de Ingreso: febrero-2008
Ubicación: Bogotá_Colombia
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 0
Error con pl sql

BUENAS TARDES AMIGOS NECESITIO POR FAVOR QUE ME COLABOREN CON ESTE PROBLEMA ; TENGO BUCLE Y DENTRO DE ESTE BUCLE SALE UNA CONSULTA A LA BASE DE DATOS

ASI ES MAS OMENOS

WHILE TRUE
LOOP
SELECT dcd.acronimo_diagnostico
FROM cargos_directos_hc
INNER JOIN diag_cargos_directos_hc dcd
ON (dcd.codigo_cargo_directo=cd.codigo_datos_hc)
WHERE cd.numero_solicitud = sol
AND dcd.principal = 'N'
AND dcd.complicacion = 'N'
ORDER BY dcd.codigo
END LOOP;
LOOP IF total = nume THEN acronimo := registro.acronimo_diagnostico;
END IF;
END LOOP;
total := total + 1;
END LOOP;
END IF;
END IF;
RETURN acronimo;
END;

LA COSA ES QUE ME SACA UN ERRO DE statement ingnored
  #2 (permalink)  
Antiguo 09/06/2009, 16:06
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: Error con pl sql

¿ Solo te saca un error ?
De entrada :
-- O te sobra un end loop o te falta un loop
-- Aquí te falta el punto y coma : ORDER BY dcd.codigo
-- Tienes dos end if pero no veo los if
-- En el SELECT te falta el " INTO "
Bla, bla , bla, bla............
Eso que has puesto no hay por donde cogerlo........................................... ......
  #3 (permalink)  
Antiguo 09/06/2009, 16:23
 
Fecha de Ingreso: febrero-2008
Ubicación: Bogotá_Colombia
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Error con pl sql

Jc3000 bueno te muestro todo el plsql es el siguiente

Código PHP:
reate or replace
FUNCTION        getAcronimoServPrincipPaquetiz
    
(
      
INT sol,
      
BOOLEAN prin,
      
BOOLEAN comp) RETURN VARCHAR
  IS
  BEGIN 
    
DECLARE
      
servicio     INTEGER;
      
solicitud    INT;
      
tipo         INTEGER;
      
tiposervicio VARCHAR;
      
acro         VARCHAR;
      
prin_acro    VARCHAR(2);
      
com_acro     VARCHAR(1);
  
      
BEGIN
       SELECT dp
.servicio  ,
        
dp.numero_solicitud,
        
s.tipo             ,
        
gettiposervicio(dp.servicio)
         
INTO servicio,
        
solicitud     ,
        
tipo          ,
        
tiposervicio
         FROM detalle_paquetizacion dp
      inner join paquetizacion
          ON
(dp.codigo_paquetizacion paquetizacion.codigo)
      
inner join  solicitudes s
           ON
(s.numero_solicitud         dp.numero_solicitud)
        
WHERE p.numero_solicitud_paquete sol
      
AND principal                      ='''';
      
      
acro          := '\';
      IF tipo        = 12 THEN
        IF prin      = true THEN
          prin_acro := '''';
        ELSE
           prin_acro := '''';
        END IF;
        IF comp     = true THEN
          com_acro := '''';
        ELSE
          com_acro := '''
;
        
END IF;
         
SELECT dcd.acronimo_diagnostico
           INTO acro
           FROM cargos_directos cd
        inner join  diag_cargos_directos_hc dcd
             on 
(dcd.codigo_cargo_directo=cd.codigo_datos_hc)
          
where  cd.numero_solicitud      solicitud
        
AND dcd.principal                prin_acro
        
AND dcd.complicacion             com_acro limit 0,1;
      ELSE
        IF 
tiposervicio   IS NOT NULL THEN
          
IF tiposervicio IN (R,Q,DTHEN
             SELECT d
.diagnostico
               INTO acro
               FROM sol_cirugia_por_servicio sc
            INNER JOIN diag_post_opera_sol_cx d
                 ON
(d.cod_sol_cx_servicio=sc.codigo
            
AND d.principal              prin
            
AND d.complicacion           comp )
              
WHERE sc.numero_solicitud  solicitud
            
AND sc.servicio              servicio limit 1;
          
END IF;
          IF 
tiposervicio P THEN
             SELECT dp
.acronimo
               INTO acro
               FROM res_sol_proc rsp
            INNER JOIN diag_procedimientos dp
                 ON
(dp.codigo_respuesta  =rsp.codigo
            
AND dp.principal             prin
            
AND dp.complicacion          comp)
              
WHERE rsp.numero_solicitud solicitud
           ORDER BY rsp
.codigo DESC limit 0,1;
          
END IF;
        
END IF;
      
END IF;
      IF 
acro IS NULL THEN
        acro  
:= ;
      
END IF;
      RETURN 
acro;
    
END;
  
END

estos on los errores que saca

Error(35,24): PLS-00103: Encountered the symbol "\" when expecting one of the following: ( - + case mod new not null <an identifier> <a double-quoted delimited-identifier> <a bind variable> continue avg count current exists max min prior sql stddev sum variance execute forall merge time timestamp interval date <a string literal with character set specification> <a number> <a single-quoted SQL string> pipe <an alternatively-quoted string literal with character set specification> <an alternatively

Error(50,9): PLS-00103: Encountered the symbol "INNER" when expecting one of the following: , ; for group having intersect minus order start union where connect
  #4 (permalink)  
Antiguo 10/06/2009, 04:41
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: Error con pl sql

Revisa esto
--
reate or replace
--
INT sol,
BOOLEAN prin,
BOOLEAN comp

¿ No sería ?

sol INT ,
prin BOOLEAN ,
comp BOOLEAN )

--

Y revisa esta serie :

='''';

Y esta
:='''';

Me da la impresion de que o te sobra una comilla simple o te falta una.

Es que no estoy en el curro y no lo puedo chequear con un editor de sql para ver los string en otro color y demas.................
  #5 (permalink)  
Antiguo 11/06/2009, 08:16
 
Fecha de Ingreso: febrero-2008
Ubicación: Bogotá_Colombia
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Error con pl sql

Gracias Ṕor tu respuesta jc3000, lo tendre presente
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 17:48.