PDA

Ver la Versión Completa : Ayuda con query


Ricardo Alfredo
19-10-2006, 18:38:59
Hola amigos, les cuento estoy convirtiendo procedimientos
almacenados desde sybase a oracle (8) y tengo el siguiente problema
En sybase podia generar en un procedimiento una tabla temporal la
cual existia para ese usuario en el transcurso que estaba viva la
transaccion. Entonces a traves de un cursor y un poco de logica mas
llenaba la tabla temp y despues a traves de otro cursor al final del
procedimiento enviaba el result set.
Ya que en oracle no puedo hacer algo similar (o no encontrado la
forma) , lo que estoy tratando de hacer que en un solo select tener
lo que hacia antes en sybase, he aqui el problema
como puedo hacer un outjoin

select contractual.codigo_trabajador,
nombres_apellidos,
contractual.codigo_empresa,email_oficina,contractual.codigo_cargo,con
tractual.codigo_unidad,contractual.codigo_negocio,
codigo_convenio,codigo_sindicato,codigo_sucursal,lugar_pago,email_par
ticular,codigo_empresa,monto_capacitacion, negocios.descripcion,unidad_administrativa.descripcion,
cargos_trabajador.descripcion,a.descripcion
from contractual,
maestro_personas,negocios,unidad_administrativa,cargos_trabajador,
estructura_expandida a
where
contractual.codigo_trabajador=maestro_personas.codigo_trabajador and
contractual.estado_contractual='activo'and
contractual.codigo_negocio=negocios.codigo_negocio(+) and
contractual.codigo_unidad=unidad_administrativa.codigo_unidad(+) and
contractual.codigo_cargo=cargos_trabajador.codigo_cargo(+) and
contractual.codigo_convenio=a.codigo_estructura(+) and
a.tipo_estructura='convenios'
order by nombres_apellidos;

entonces no me deja hacer el outer con una constante, como puedo reemplazar esto, porque tengo como cinco tablas mas que tienen costantes y si las dejo asi no me trae todos los registros.

gracias


Ricardo Arancibia Ardiles
www.smartsoft.cl
Fono 6333907 - 6387418 - 092225878

Paoti
19-10-2006, 20:02:37
prueba hacer esto tambien


where campo = 'valor'(+)


o

where campo = (Select 'valorconstante' from dual) (+)

o

where campo in (Select 'valorconstante' from dual) (+)

jachguate
19-10-2006, 20:10:12
Hola.

En primer lugar, he encerrado tu sentencia en las etiquetas SQL. Podes editar tu mensaje para ver cómo se usan.

Luego, no me queda claro cual es el problema, ¿podes explicarlo nuevamente?

Hasta luego.

;)

avmm2004
22-10-2006, 15:36:09
En oracle existen tablas temporales por lo menos desde la 8i. La sintaxis es :

CREATE GLOBAL TEMPORARY TABLE my_temp_table (
column1 NUMBER,
column2 NUMBER
) ON COMMIT DELETE ROWS;

¿ Te vale para lo que buscabas. ?:confused: