[英]Declaring a variable for using as parameter in stored mysql procedure
我正在嘗試實現一個簡單的計數器 ,該計數器在SQL查詢的多個語句中作為參數傳遞(請參見下文)。 我有以下測試環境
CREATE TABLE `test`.`TableA` (
`ColumnA` INT( 3 ) NOT NULL ,
`ColumnB` INT( 5 ) NOT NULL
) ENGINE = MYISAM ;
ALTER TABLE `TableA` ADD INDEX ( `ColumnA` )
INSERT INTO `TableA` (`ColumnA`, `ColumnB`) VALUES
(2, 4654), (2, 223), (5, 12), (4, 32), (3, 23), (5, 21), (1, 2), (2, 2), (4, 2), (5, 1);
我需要為每個計數器迭代編號的輸出文件(而AFAIK的一種方法是使用存儲過程)
CREATE PROCEDURE dowhile()
BEGIN
DECLARE CONT INT DEFAULT 5
WHILE CONT > 1 DO
BEGIN
SELECT TableA.ColumnB
INTO OUTFILE CONCAT('OUT', CONT)
FROM TableA
WHERE TableA.ColumnA = CONT
SET CONT = CONT - 1
END
END WHILE
END;
看起來有2個問題:
通過大量的Google搜索,我得出了與MySql 5.1.51一起使用的以下解決方案:
delimiter //
CREATE PROCEDURE doWhile()
BEGIN
DECLARE CONT INT DEFAULT 5;
DECLARE filename VARCHAR(32);
WHILE CONT > 1 DO
SET @myvar = CONCAT('SELECT TableA.ColumnB INTO OUTFILE', "'", CONCAT('OUT', CONT), "'", 'FROM TableA WHERE TableA.ColumnA = ', CONT );
PREPARE stmt1 FROM @myvar;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
SET CONT = CONT - 1;
END WHILE;
END
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.