root/db/functions.sql

Revision 75fa94be4e985c93bb38f0cefbd198b5e087e454, 0.6 kB (checked in by Christopher Jung <bktheg@web.de>, 2 years ago)

SQL-Stored Function getIntelliShipID() eingebaut

  • Property mode set to 100644
Line 
1 -- Berechnet die naechste freie Schiffs-ID ab der angegebenen ID
2 DELIMITER //
3 CREATE FUNCTION newIntelliShipID(minid INT) RETURNS INT
4 READS SQL DATA
5 BEGIN
6   DECLARE done,sid,shouldId INT DEFAULT 0;
7   DECLARE cur1 CURSOR FOR SELECT DISTINCT abs(id) iid FROM ships WHERE abs(id)>=minid ORDER BY iid;
8   DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
9
10   OPEN cur1;
11   set shouldId = minid;
12   REPEAT
13     FETCH cur1 INTO sid;
14     IF NOT done THEN
15       IF sid <> shouldId THEN
16         CLOSE cur1;
17         RETURN shouldId;
18       END IF;
19       set shouldId = shouldId+1;
20     END IF;
21   UNTIL done END REPEAT;
22
23   CLOSE cur1;
24   RETURN shouldId;
25 END;
26 //
Note: See TracBrowser for help on using the browser.