输入参数为 i_number ,i_number输入的范围为1-10,
当输入参数为2的话,用dbms_output.put()或者dbms_output.put_line()来打印 
结果如:1 、2
       3 、4
当输入3的话,
结果为:1 、2 、3
       4 、5 、6
       7 、8 、9
当输入4的话,依次类推。
要求写一个存储过程来实现,请问大家这怎么做啊。

解决方案 »

  1.   


    CREATE OR REPLACE PROCEDURE P_TEST(I_NUMBER INT) IS
    BEGIN
      FOR I IN 1 .. I_NUMBER LOOP
        FOR J IN 1 .. I_NUMBER LOOP
          IF J = 1 THEN
            DBMS_OUTPUT.PUT(TO_CHAR(J + I_NUMBER * (I - 1)));
          ELSE
            DBMS_OUTPUT.PUT('、' || TO_CHAR(J + I_NUMBER * (I - 1)));
          END IF;
        
        END LOOP;
        DBMS_OUTPUT.PUT_LINE('');
      END LOOP;
    END P_TEST;
    /BEGIN
    P_TEST(3);
    END;
    /
      

  2.   

    try it ..
    SQL> set serveroutput on;
    SQL> 
    SQL> create or replace procedure huawei_test(i_number in number)
      2  is
      3  temp_char number;
      4  begin
      5    temp_char := 0;
      6    for i in 1..i_number loop
      7        for i in 1..i_number loop
      8            temp_char := temp_char + 1;
      9               dbms_output.put(temp_char||' ');
     10        end loop;
     11        dbms_output.put_line('');
     12    end loop;
     13  end ;
     14  /Procedure createdSQL> exec huawei_test(3);1 2 3 
    4 5 6 
    7 8 9 PL/SQL procedure successfully completedSQL> exec huawei_test(6);1 2 3 4 5 6 
    7 8 9 10 11 12 
    13 14 15 16 17 18 
    19 20 21 22 23 24 
    25 26 27 28 29 30 
    31 32 33 34 35 36 PL/SQL procedure successfully completedSQL> 
      

  3.   

    这种面试题好像用C语言时要求打印个三角形正方形等等。怎样测试出数据库掌握的水平呢?用oracle内置的某些函数取代循环来实现?