1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
CREATE OR REPLACE FUNCTION store_db (VARCHAR)
RETURNS BIGINT AS
'DECLARE
v_name ALIAS FOR $1;
v_db_id BIGINT;
BEGIN
SELECT INTO v_db_id db_id
FROM db
WHERE name=v_name;
IF NOT FOUND THEN
INSERT INTO db
(name)
VALUES
(v_name);
RETURN currval(''db_db_id_seq'');
END IF;
RETURN v_db_id;
END;
' LANGUAGE 'plpgsql';
CREATE OR REPLACE FUNCTION store_dbxref (VARCHAR,VARCHAR)
RETURNS BIGINT AS
'DECLARE
v_dbname ALIAS FOR $1;
v_accession ALIAS FOR $2;
v_db_id BIGINT;
v_dbxref_id BIGINT;
BEGIN
SELECT INTO v_db_id
store_db(v_dbname);
SELECT INTO v_dbxref_id dbxref_id
FROM dbxref
WHERE db_id=v_db_id AND
accession=v_accession;
IF NOT FOUND THEN
INSERT INTO dbxref
(db_id,accession)
VALUES
(v_db_id,v_accession);
RETURN currval(''dbxref_dbxref_id_seq'');
END IF;
RETURN v_dbxref_id;
END;
' LANGUAGE 'plpgsql';
|