Project

General

Profile

1 4519 aaronmk
-- Function: "VegBank".plantconcept_ancestors(integer)
2
3
-- DROP FUNCTION "VegBank".plantconcept_ancestors(integer);
4
5 4520 aaronmk
CREATE OR REPLACE FUNCTION "VegBank".plantconcept_ancestors(IN plantconcept_id_ integer, OUT plantconcept_id integer, OUT plantlevel character varying)
6 4519 aaronmk
  RETURNS SETOF record AS
7
$BODY$
8
DECLARE
9
    plantparent_id "VegBank".plantstatus.plantparent_id%TYPE;
10
BEGIN
11
    -- Get plantparent_id. Remove plantconcept_id if no match or no plantstatus.
12 4520 aaronmk
    SELECT
13
    plantstatus.plantconcept_id
14
    , plantstatus.plantlevel
15
    , plantstatus.plantparent_id
16
    INTO plantconcept_id, plantlevel, plantparent_id
17 4519 aaronmk
    FROM "VegBank".plantstatus
18 4520 aaronmk
    WHERE plantstatus.plantconcept_id = plantconcept_id_
19 4519 aaronmk
    ;
20
    -- Add this level to the list (output params' current values)
21
    RETURN NEXT;
22
    -- Recurse
23
    IF plantparent_id IS NOT NULL THEN
24
        RETURN QUERY (
25
            SELECT * FROM "VegBank"."plantconcept_ancestors"(plantparent_id)
26
        );
27
    END IF;
28
END;
29
$BODY$
30
  LANGUAGE plpgsql IMMUTABLE STRICT
31
  COST 100
32
  ROWS 10;