y en este ejemplo como seria ?
por que yo lo coloco y me manda error
Código SQL:
Ver originalCREATE OR REPLACE FUNCTION ........ RETURNS text AS $BODY$
DECLARE
.
.
.
BEGIN
IF (SELECT COUNT(*) FROM personas WHERE id_persona = RUT) = 0 THEN
INSERT INTO PERSONAS (id_persona,nombre,apellido,celular,email,fono) VALUES(RUT,PNOMBRE,PAPELLIDO,PCELULAR,PEMAIL,PFONO);
IF PERFIL = 'TALLER' THEN
CODIGO = TMPLoc ('CODIGO',CADENA);
SELECT INTO contador COUNT(*) FROM usuario_has_perfiles_acceso WHERE id_perfil_acceso = 5 AND id_sub_perfil_acc = 1 AND id_local = CODIGO;
IF contador = 0 THEN
INSERT INTO usuario_has_perfiles_acceso (id_perfil_acceso,id_sub_perfil_acc,id_local)VALUES(5,1,CODIGO);
SELECT INTO IDUSUHASP CURRVAL(pg_get_serial_sequence('usuario_has_perfiles_acceso','id_usu_has_per_acc'));
ELSE
SELECT INTO IDUSUHASP id_usu_has_per_acc FROM usuario_has_perfiles_acceso WHERE id_perfil_acceso = 5 AND
id_sub_perfil_acc = 1 AND id_local = CODIGO;
END IF;
INSERT INTO USUARIOS (id_usu_has_per_acc,id_persona,login,password)VALUES(IDUSUHASP,RUT,PEMAIL,CONTRASENA);
COMMIT;
RETURN 'OK';
ELSIF PERFIL = 'LOCAL' THEN
DIR = TMPLoc ('NOMBRELOCAL',CADENA);
SELECT INTO CODIGO ID_LOCAL FROM LOCALES WHERE DIRECCION = DIR;
SELECT INTO contador COUNT(*) FROM usuario_has_perfiles_acceso WHERE id_perfil_acceso = 2 AND id_sub_perfil_acc = 3 AND id_local =
(SELECT ID_LOCAL FROM LOCALES WHERE DIRECCION = DIR LIMIT 1);
IF contador = 0 THEN
INSERT INTO usuario_has_perfiles_acceso (id_perfil_acceso,id_sub_perfil_acc,id_local)VALUES(2,3,CODIGO);
SELECT INTO IDUSUHASP CURRVAL(pg_get_serial_sequence('usuario_has_perfiles_acceso','id_usu_has_per_acc'));
ELSE
SELECT INTO IDUSUHASP id_usu_has_per_acc FROM usuario_has_perfiles_acceso WHERE id_perfil_acceso = 2 AND
id_sub_perfil_acc = 3 AND id_local = CODIGO;
END IF;
INSERT INTO USUARIOS (id_usu_has_per_acc,id_persona,login,password)VALUES(IDUSUHASP,RUT,PEMAIL,CONTRASENA);
COMMIT;
RETURN 'OK';
END IF;
ELSE
ROLLBACK;
RETURN 'La Persona ya existe en el sistema';
END IF;
END;
$BODY$
LANGUAGE 'plpgsql'