MySQL 5.5中的DECLARE是指在MySQL存儲過程或函數中定義一個局部變量
DECLARE variable_name datatype [DEFAULT value];
其中variable_name為變量名稱,datatype為變量數據類型,[DEFAULT value]為可選參數,表示變量的默認值。使用DECLARE定義的變量只能在當前存儲過程或函數中使用。
在MySQL中,DECLARE常常和SET一起使用,用于給變量初始化或重新賦值:
DECLARE total INT DEFAULT 0; SET total = 10; SELECT total; -- 輸出結果為10
除了SET之外,DECLARE還可以和SELECT INTO一起使用,將查詢結果賦值給變量:
DECLARE name VARCHAR(20); SELECT user_name INTO name FROM user WHERE user_id = 1; SELECT name; -- 輸出結果為查詢結果中user_name字段的值
同時,DECLARE還支持游標的定義與使用,用于處理多行查詢結果:
DECLARE cur CURSOR FOR SELECT * FROM user; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; DECLARE done BOOLEAN DEFAULT FALSE; DECLARE name VARCHAR(20); OPEN cur; read_loop: LOOP FETCH cur INTO name; IF done THEN LEAVE read_loop; END IF; SELECT name; END LOOP; CLOSE cur;
上述代碼中,定義了一個名為cur的游標,查詢user表中所有行。DECLARE CONTINUE HANDLER用于在游標已經到達查詢結果末尾時將done置為TRUE,從而退出讀取循環。OPEN將游標打開,FETCH將結果中的每一行讀取到name變量中并輸出,CLOSE會關閉游標。