2012-09-07 16 views
-1

我想循環一個存儲過程中的SELECTED RESULT SET,具體取決於我指定的任何數字作爲我的參數。MySQL在一個存儲過程中通過字段循環並在同一個結果集中返回

例子。

DELIMITER | 
CREATE PROCEDURE Say_ma_name(IN number INT) 
BEGIN 
    DECLARE v_counter INT DEFAULT 0; 
    DECLARE v_name CHAR; 
    SELECT name INTO v_name FROM Table WHERE id = number; 

現在讓我們說名字SELECTED是'Bob'。我想從這裏有一個生成的結果集返回:

Bob, Bob, Bob 

我的腳本的其餘部分看起來是這樣的:

REPEAT 
     SELECT CONCAT_WS(',',v_name); 
     SET v_counter = V_counter + 1; 
    UNTIL v_counter > number END REPEAT; 
END | 
DELIMITER ; 

CALL Say_ma_name(1); 

對於那些以下,這將返回三個(3 )分離結果集,每個結果集都包含Bob。我試圖在一個結果中實現這一切。問候。

+1

如果你有一個「鮑勃」在你的表,你想獲得結果集的三個「鮑勃」的記錄,爲什麼呢?另外,我沒有看到WHERE子句中的'number'和'number'之間的關係來計算記錄。 – Devart

回答

0

所以你需要創建一箇中間字符串值:

SET @result = ''; 
REPEAT 
    SET @result = CONCAT(@result, ','); 
    SET v_counter = V_counter + 1; 
UNTIL v_counter > number END REPEAT; 

SELECT TRIM(TRAILING ',' FROM @result); 
+0

當然,* real * WTF是這樣一個事實,似乎沒有很好的理由使用該行的id值並重復多次該字符串。 –

相關問題