-- VERSION 1.3.0 CREATE OR REPLACE FUNCTION location_save (in_id int, in_companyname text, in_address1 text, in_address2 text, in_city text, in_state text, in_zipcode text, in_country text) returns integer AS $$ DECLARE location_id integer; BEGIN UPDATE locations SET companyname = in_companyname, address1 = in_address1, address2 = in_address2, city = in_city, state = in_state, zipcode = in_zipcode, country = in_country WHERE id = in_id; IF FOUND THEN return in_id; END IF; INSERT INTO location (companyname, address1, address2, city, state, zipcode, country) VALUES (in_companyname, in_address1, in_address2, in_city, in_state, in_zipcode, in_country); SELECT lastval('location_id_seq') INTO location_id; return location_id; END; $$ LANGUAGE PLPGSQL; CREATE OR REPLACE FUNCTION location_get (in_id integer) returns locations AS $$ DECLARE location locations%ROWTYPE; BEGIN SELECT * INTO location FROM locations WHERE id = in_id; RETURN location; END; $$ language plpgsql; CREATE OR REPLACE FUNCTION location_search (in_companyname varchar, in_address1 varchar, in_address2 varchar, in_city varchar, in_state varchar, in_zipcode varchar, in_country varchar) RETURNS SETOF locations AS $$ DECLARE location locations%ROWTYPE; BEGIN FOR location IN SELECT * FROM locations WHERE companyname ilike '%' || in_companyname || '%' AND address1 ilike '%' || in_address1 || '%' AND address2 ilike '%' || in_address2 || '%' AND in_city ilike '%' || in_city || '%' AND in_state ilike '%' || in_state || '%' AND in_zipcode ilike '%' || in_zipcode || '%' AND in_country ilike '%' || in_country || '%' LOOP RETURN NEXT location; END LOOP; END; $$ LANGUAGE PLPGSQL; CREATE OR REPLACE FUNCTION location_list_all () RETURNS SETOF locations AS $$ DECLARE location locations%ROWTYPE; BEGIN FOR location IN SELECT * FROM locations ORDER BY company_name, city, state, country LOOP RETURN NEXT location; END LOOP; END; $$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION location_delete (in_id integer) RETURNS VOID AS $$ BEGIN DELETE FROM locations WHERE id = in_id; END; $$ language plpgsql;