Procedimiento almacenado para retornar el ultimo registro ingresado
Publicado por Alexander (4 intervenciones) el 12/06/2017 22:51:01
Saludos amigos estoy haciendo una funcion para retornar el registro ingresado, no el ultimo porque puede darse el caso que esten ingresando al mismo momento varios usuarios y se pueden cruzar los registros, la idea es de utilizar returning pero me da error alguien me puede ayudar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
CREATE OR REPLACE FUNCTION sch_recursos_humanos.spenrolarguardar(
IN p_id_funcionario integer,
IN p_id_regimen integer,
IN p_id_cargo integer,
IN p_descripcion character varying,
IN p_detalle character varying,
IN p_observacion character varying,
IN p_usuario_app integer)
RETURNS SETOF RECORD AS
$BODY$
DECLARE
v_numero_enrolados INT DEFAULT 0;
v_mes INT DEFAULT 0;
v_ano INT DEFAULT 0;
ins RECORD;
BEGIN
v_mes = date_part('month',now());
v_ano = date_part('years',now());
SELECT COUNT(*) INTO v_numero_enrolados FROM sch_recursos_humanos.enrolar;
WITH ins AS (
INSERT INTO sch_recursos_humanos.enrolar (id_funcionario, id_regimen, id_cargo, numero_enrolado, codigo_enrolado, descripcion, detalle, observacion, usuario_app)
VALUES(p_id_funcionario, p_id_regimen, p_id_cargo, v_numero_enrolados, v_numero_enrolados + 1 || '.' || p_id_funcionario || '.' || p_id_regimen || '.' || p_id_cargo || '.' || v_mes || '.' || v_ano , p_descripcion, p_detalle, p_observacion, p_usuario_app)
RETURNING *
)
RETURN SELECT * FROM ins;
END;
$BODY$
LANGUAGE plpgsql VOLATILE;
Valora esta pregunta
0