blob: 9f7a5ac83e885519d58cafc7fc534c422013e75b (
plain)
- --
- BEGIN;
- CREATE OR REPLACE FUNCTION entity_save(
- in_entity_id int, in_name text, in_entity_class INT
- ) RETURNS INT AS $$
- DECLARE
- e entity;
- e_id int;
-
- BEGIN
-
- select * into e from entity where id = in_entity_id;
-
-
- update
- entity
- SET
- name = in_name,
- entity_class = in_entity_class
- WHERE
- id = in_entity_id;
- IF NOT FOUND THEN
- -- do the insert magic.
- e_id = nextval('entity_id_seq');
- insert into entity (id, name, entity_class) values
- (e_id,
- in_name,
- in_entity_class
- );
- return e_id;
- END IF;
- return in_entity_id;
-
- END;
- $$ language 'plpgsql';
- CREATE OR REPLACE FUNCTION entity__list_classes ()
- RETURNS SETOF entity_class AS $$
- DECLARE out_row entity_class;
- BEGIN
- FOR out_row IN
- SELECT * FROM entity_class
- WHERE active
- ORDER BY id
- LOOP
- RETURN NEXT out_row;
- END LOOP;
- END;
- $$ LANGUAGE PLPGSQL;
- CREATE OR REPLACE FUNCTION entity__get_entity (
- in_entity_id int
- ) RETURNS setof entity AS $$
- declare
- v_row entity;
- BEGIN
- SELECT * INTO v_row FROM entity WHERE id = in_entity_id;
- IF NOT FOUND THEN
- raise exception 'Could not find entity with ID %', in_entity_id;
- ELSE
- return next v_row;
- END IF;
- END;
- $$ language plpgsql;
- commit;
|