Oracle - procedure pl/sql

 
Vista:

procedure pl/sql

Publicado por aldo (10 intervenciones) el 15/10/2010 17:03:27
Hola, tengo el siguiente store procedure que realiza un update...

PROCEDURE sp_upd_operador_dest (p_usuario IN OPICS.SB_FTF.OPERADOR_DESTINO%TYPE
,p_nro_secu IN OPICS.SB_FTF.NRO_SECUENCIA_FTF%TYPE
,p_fch_oper IN OPICS.SB_FTF.FECHA_OPER%TYPE
,p_transfer_ftf IN VARCHAR2
,p_err OUT VARCHAR2)
AS
--
BEGIN
--
p_err := NULL;
--

IF p_transfer_ftf IS NULL
UPDATE OPICS.SB_FTF
SET ASIGNADA = 'T',
OPERADOR_DESTINO = p_usuario
WHERE NRO_SECUENCIA_FTF = p_nro_secu
AND ASIGNADA = 'N'
AND FECHA_OPER = TO_DATE(p_fch_oper)
ELSE
UPDATE OPICS.SB_FTF
SET ASIGNADA = 'T',
OPERADOR_DESTINO = p_usuario
WHERE NRO_SECUENCIA_FTF = p_nro_secu
AND ASIGNADA = 'N'
AND FECHA_OPER = TO_DATE(p_fch_oper)
AND ARCHIVO_ORIGINAL IN ('CINEGCON', 'CINECONC','OPCIONES','REEJCOMI','BTTR')
END IF

--
--
EXCEPTION
WHEN OTHERS THEN
........
.......
--
END sp_upd_operador;

Quiero saber si puedo hacer el query del update en una sola sentencia sin tener que preguntar por si el parametro p_transfer_ftf es null o no.
Esa pregunta hace que agregue la siguiente linea...
AND ARCHIVO_ORIGINAL IN ('CINEGCON', 'CINECONC','OPCIONES','REEJCOMI','BTTR')
Puedo hacer todo en una sola sentencia?

gracias,
saludos
aldo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:procedure pl/sql

Publicado por luisma (14 intervenciones) el 20/10/2010 18:12:12
hola

prueba con:

UPDATE OPICS.SB_FTF
SET ASIGNADA = 'T',
OPERADOR_DESTINO = p_usuario
WHERE NRO_SECUENCIA_FTF = p_nro_secu
AND ASIGNADA = 'N'
AND FECHA_OPER = TO_DATE(p_fch_oper)
and (
( p_transfer_ftf is null
or
( p_transfer_ftf is not null AND ARCHIVO_ORIGINAL IN ('CINEGCON', 'CINECONC','OPCIONES','REEJCOMI','BTTR')
)

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar