x
1
DECLARE
2
pname ALIAS FOR $1;
3
paccession ALIAS FOR $2;
4
pfmin ALIAS FOR $3;
5
pfmax ALIAS FOR $4;
6
pfstrand ALIAS FOR $5;
7
presidues ALIAS FOR $6;
8
pseqlen ALIAS FOR $7;
9
pmd5checksum ALIAS FOR $8;
10
ptype_id ALIAS FOR $9;
11
12
pkeyid INTEGER;
13
BEGIN
14
SELECT INTO pkeyid feature_id
15
FROM feature
16
WHERE feature.name = pname AND
17
feature.accession = paccession AND
18
feature.fmin = pfmin AND
19
feature.fmax = pfmax AND
20
feature.fstrand = pfstrand AND
21
feature.residues = presidues AND
22
feature.seqlen = pseqlen AND
23
feature.md5checksum = pmd5checksum AND
24
feature.type_id = ptype_id;
25
IF NOT FOUND THEN
26
INSERT INTO feature
27
(name, accession, fmin, fmax, fstrand, residues, seqlen, md5checksum, type_id)
28
VALUES
29
(pname, paccession, pfmin, pfmax, pfstrand, presidues, pseqlen, pmd5checksum, ptype_id);
30
RETURN currval('feature_pk_seq');
31
END IF;
32
UPDATE feature
33
SET
34
35
WHERE
36
feature.name = pname AND
37
feature.accession = paccession AND
38
feature.fmin = pfmin AND
39
feature.fmax = pfmax AND
40
feature.fstrand = pfstrand AND
41
feature.residues = presidues AND
42
feature.seqlen = pseqlen AND
43
feature.md5checksum = pmd5checksum AND
44
feature.type_id = ptype_id
45
46
RETURN pkeyid;
47
END;