/sql/Function/reports_set_exec_print_fio.sql

http://cupsfilter.googlecode.com/ · SQL · 47 lines · 42 code · 2 blank · 3 comment · 4 complexity · 2933455dd7e88261b85a2090694b0235 MD5 · raw file

  1. --DROP FUNCTION reports_set_exec_print_fio(integer,character varying,character varying);
  2. CREATE OR REPLACE FUNCTION reports_set_exec_print_fio(integer,character varying,character varying,character varying)
  3. RETURNS INTEGER AS
  4. $BODY$
  5. DECLARE
  6. find_id INTEGER;
  7. exec_id INTEGER;
  8. rep_id ALIAS for $1;
  9. user_fio ALIAS for $2;
  10. user_type ALIAS for $3;
  11. phone ALIAS for $4;
  12. BEGIN
  13. find_id = (SELECT id FROM reports WHERE id = rep_id);
  14. IF (find_id IS NULL) THEN
  15. INSERT INTO debug_log (inf_str) VALUES ('?????? ??????? ??????. ? ??????? reports ?? ?????????? ?????? ? ??????????? ?? ??????? cups_data_log ?????? N='||rep_id);
  16. RETURN 0;
  17. END IF;
  18. BEGIN
  19. IF (user_type='executor') THEN
  20. -- set_executor_fio
  21. exec_id = (SELECT id FROM executors WHERE fio = user_fio and telephone =phone);
  22. IF (exec_id IS NULL) THEN
  23. INSERT INTO executors (fio,telephone) VALUES (user_fio,phone);
  24. exec_id = (SELECT id FROM executors WHERE fio = user_fio and telephone = phone);
  25. END IF;
  26. UPDATE reports SET executor_id = exec_id WHERE reports.id = find_id;
  27. END IF;
  28. IF (user_type='pressman') THEN
  29. -- set_executor_fio
  30. exec_id = (SELECT id FROM pressman WHERE fio = user_fio);
  31. IF (exec_id IS NULL) THEN
  32. INSERT INTO pressman (fio) VALUES (user_fio);
  33. exec_id = (SELECT id FROM pressman WHERE fio = user_fio);
  34. END IF;
  35. UPDATE reports SET pressman_id = exec_id WHERE reports.id = find_id;
  36. END IF;
  37. RETURN 1;
  38. EXCEPTION WHEN unique_violation THEN
  39. RETURN 0; -- do nothing, and loop to try the UPDATE again
  40. END;
  41. END;
  42. $BODY$
  43. LANGUAGE 'plpgsql' VOLATILE
  44. COST 100;
  45. ALTER FUNCTION reports_set_exec_print_fio(integer,character varying,character varying,character varying) OWNER TO postgres;