-1

パラメータとして指定した数値に応じて、ストアド プロシージャで SELECTED RESULT SET をループしようとしています。

例。

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つの結果で達成しようとしています。よろしく。

4

1 に答える 1

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); 
于 2012-09-07T01:01:56.897 に答える