2016-09-08 5 views
-2

で水平形式になりたい:私はこのコードを持っているPL/SQL

DECLARE 
    V_RES varchar2(100); 
BEGIN 
    FOR I IN 1..5 LOOP 
    FOR J IN 65..70 LOOP 
     V_RES := V_RES ||' '||I||CHR(J); 
    END LOOP; 
    DBMS_OUTPUT.PUT_LINE(V_RES); 
    V_RES :=''; 
    END LOOP; 
END; 
/

結果は次のとおりです。

1A 1B 1C 1D 1E 1F 
2A 2B 2C 2D 2E 2F 
3A 3B 3C 3D 3E 3F 
4A 4B 4C 4D 4E 4F 
5A 5B 5C 5D 5E 5F 

しかし、私はこの形式で結果をしたい:

1A 2A 3A 
1B 2B 3B 
1C 2C 3C 
+0

ようこそスタックオーバーフロー! [ツアー](http://stackoverflow.com/tour)、[ヘルプセンター](http://stackoverflow.com/help)、[良い質問をする方法](http://このサイトがどのように機能するかを確認し、現在および将来の質問を改善するのに役立ち、より良い回答を得るのに役立ちます。 –

+0

ループを交換したいですか?期待される結果が5つではなく3つの行と列しか持たないのはなぜですか? –

答えて

0

文字と数字をループする順序を入れ替えるだけです。文字通り十分だろう2つのfor文を交換する:

FOR J IN 65..67 LOOP 
    FOR I IN 1..3 LOOP 

DECLARE 
    V_RES varchar2(100); 
BEGIN 
    FOR J IN 65..70 LOOP 
    FOR I IN 1..5 LOOP 
     V_RES := V_RES ||' '||I||CHR(J); 
    END LOOP; 
    DBMS_OUTPUT.PUT_LINE(V_RES); 
    V_RES :=''; 
    END LOOP; 
END; 
/

PL/SQL procedure successfully completed. 

1A 2A 3A 4A 5A 
1B 2B 3B 4B 5B 
1C 2C 3C 4C 5C 
1D 2D 3D 4D 5D 
1E 2E 3E 4E 5E 
1F 2F 3F 4F 5F 

あなただけ3Cに1Aをしたい場合は、あなたが質問に示したように、あなたは、各ループの上限を変更します取得する

PL/SQL procedure successfully completed. 

1A 2A 3A 
1B 2B 3B 
1C 2C 3C 
+0

ありがとうA Lot Alex Poole –

関連する問題