我有一個「口」 INT列,其中它應該從30000至50000檢測在(自動遞增)序列
因此缺失值,我有一個存儲過程中插入值(端口不空值)。所以我必須選擇「手動」存儲在該字段上的值。問題是,儘管我可以在某個點上增量插入(30000,30001,30002 ....),但有些條目會被刪除(它變成了30000,30002,30004 ....),所以有些孔要設置。
我需要在我的SP中放置一個適合這些洞的方法(在我的例子中它們是30001,30003 ....)。我的問題是如何檢查SP,如果某個值已經'ocuppied'。
我以爲從MySQL使用LOOP。嘗試這樣的事情:
CREATE PROCEDURE teste()
BEGIN
DECLARE p INT;
DECLARE aux INT;
SET p = 30000;
label1: LOOP
SELECT Port FROM Reg WHERE Port = p INTO aux;
IF p = 50000 THEN
LEAVE label1;
END IF;
IF aux IS NULL THEN -- aux-1 is not null, so I can verify the "next miminum available position"
aux = aux - 1;
LEAVE label1;
ELSE
SET p = p + 1;
ITERATE label1;
END IF;
END LOOP label1;
RETURN aux;
END $$
我的問題是獲取結果值。如果我放置該RETURN語句,則只會獲得FUNCTION上允許的信息。當我結束循環時,SELECT的結果總是爲空。
我該怎麼辦?
所以,問題是:我怎麼發現從序列缺失值? – 2011-12-28 18:27:52
@SergeiTulentsev是的!我需要最小的缺失值,所以我可以將它用於下一個條目。 – Tiago 2011-12-28 18:39:01
看看我的答案。 – 2011-12-28 18:39:44