Buen día!!
Necesito de su amable ayuda :)
Soy nueva en oracle, así que hay q tenerme paciencia :P
Tengo una aplicación que registra empleados, para esto en la tabla de datos generales (tbl_rh_cv_datos_grales) se almacena la información del empleado como fecha de nacimiento, numero de hijos, correos, iddomicilio etc, y en otra tabla se almacena su domicilio (tbl_rh_cv_domicilio) ahora, ya que todo esto se hace desde la misma pantalla, estoy pensando en hacer una función en lugar de hacer 2 inserts diferentes...
Ya una vez había trabajado con una función en postgresql que recibía los parámetros, los metía en variables y comenzaba con los inserts.. x ejemplo, primero hacia el insert en la tabla de domicilio y a otra variable le asignaba el id que se insertaba, y cuando inserta en la tabla de datos generales (dentro de la misma función) le envía el id del domicilio guardado.
Ahora, estas funciones las se hacer en postgresql, pero en Oracle no tengo ni la minima idea de como :( hay alguien que tenga un ejemplito por ahí en el que me pueda basar??
esta es la función como la hacia en postgresql por si es que no me explique bien... muchas gracias!!
Código SQL:
Ver originalCREATE FUNCTION prospectos_insert(CHARACTER VARYING, INTEGER, INTEGER, INTEGER,
CHARACTER VARYING, CHARACTER VARYING, CHARACTER VARYING, INTEGER, INTEGER, CHARACTER
VARYING, text, CHARACTER VARYING, CHARACTER VARYING, INTEGER) RETURNS catalogoprospectos
LANGUAGE plpgsql
AS $_$DECLARE
Resultado catalogoprospectos%rowtype;
r_idprospecto INTEGER;
r_idpersona INTEGER;
r_id_tel INTEGER;
r_idtipotelefono INTEGER;
p_prospecto CHARACTER VARYING:=$1;
p_idgiro INTEGER :=$2;
p_idlocalidad INTEGER :=$3;
p_idestatus INTEGER :=$4;
p_nombre CHARACTER VARYING:=$5;
p_paterno CHARACTER VARYING:=$6;
p_materno CHARACTER VARYING:=$7;
p_lada INTEGER :=$8;
p_telefono INTEGER :=$9;
p_email CHARACTER VARYING:=$10;
p_comentarios text :=$11;
p_hashurl CHARACTER VARYING:=$12;
p_periodo CHARACTER VARYING:=$13;
p_creadopor INTEGER :=$14;
BEGIN
SELECT INTO r_idpersona idpersona FROM personas_insert(p_nombre,
p_paterno,
p_materno,
'?','',NULL,NULL,
p_creadopor) idpersona;
RAISE DEBUG 'r_idpersona=%', r_idpersona;
INSERT INTO prospectos(idgiro, idcontacto, idlocalidad,
idestatus, prospecto, email, comentarios,
periodo, hashurl, creadopor)
VALUES(p_idgiro, r_idpersona, p_idlocalidad,
p_idestatus, p_prospecto, p_email, p_comentarios,
p_periodo, p_hashurl, p_creadopor);
SELECT INTO r_idprospecto idprospecto FROM prospectos
WHERE prospecto=p_prospecto
AND idlocalidad=p_idlocalidad AND hashurl=p_hashurl AND creadopor=p_creadopor AND email=p_email;
IF NOT FOUND
THEN
RAISE EXCEPTION 'ERROR AL INSERTAR EL REGISTRO DE PROSPECTOS.';
END IF;
RAISE DEBUG 'r_idprospecto=%', r_idprospecto;
SELECT INTO r_idtipotelefono idcatalogomaestro FROM catalogomaestro WHERE definicion='Telefono_De_Contacto';
SELECT id INTO r_id_tel FROM telefonospersona_insert(r_idtipotelefono,p_lada,p_telefono,'teléfono de contacto para prospección',TRUE,r_idpersona) id;
RAISE DEBUG 'r_id_tel=%', r_id_tel;
SELECT INTO Resultado * FROM catalogoprospectos WHERE idprospecto=r_idprospecto;
IF NOT FOUND
THEN
RAISE EXCEPTION 'ERROR AL CORROBORAR REGISTRO DE PROSPECTOS.';
END IF;
RETURN Resultado;
END
$_$;
ALTER FUNCTION public.prospectos_insert(CHARACTER VARYING, INTEGER, INTEGER,
INTEGER, CHARACTER VARYING, CHARACTER VARYING, CHARACTER VARYING, INTEGER, INTEGER,
CHARACTER VARYING, text, CHARACTER VARYING, CHARACTER VARYING, INTEGER) OWNER TO
postgres;
[/PHP]