Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2017
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION demographic( demographic_type varchar, demographic_code varchar, demographic_description varchar)
  2.  RETURNS TABLE (demographic_type_id uuid, demographic_value_id uuid ) AS $$
  3.  
  4. DECLARE
  5.         demographic_type_id uuid;
  6.         demographic_value_id uuid;
  7. BEGIN
  8.        
  9.     SELECT id INTO demographic_type_id FROM demographic WHERE lower(name) = lower(demographic_type);
  10.         IF NOT FOUND THEN
  11.                 BEGIN
  12.                         INSERT INTO demographic (id, name) VALUES (uuid_generate_v4(), demographic_type) RETURNING id INTO demographic_type_id;
  13.             EXCEPTION WHEN unique_violation THEN
  14.                         SELECT id INTO demographic_type_id FROM demographic WHERE lower(name) = lower(demographic_type);        
  15.                 END;
  16.         END IF;
  17.  
  18.         SELECT id INTO demographic_value_id FROM demographic_value WHERE demographic_id = demographic_type_id AND code = demographic_code;
  19.         IF NOT FOUND THEN
  20.                 BEGIN
  21.                         INSERT INTO demographic_value (id, demographic_id, code, description) VALUES (uuid_generate_v4(), demographic_type_id, demographic_code, demographic_description) RETURNING id INTO demographic_value_id;
  22.                 EXCEPTION WHEN unique_violation THEN
  23.                         SELECT id INTO demographic_value_id FROM demographic_value WHERE demographic_id = demographic_type_id AND code = demographic_code;
  24.                 END;
  25.         END IF;
  26.  
  27.         RETURN QUERY SELECT demographic_type_id, demographic_value_id;
  28. END;
  29. $$ LANGUAGE plpgsql;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement