PLSQL嵌套循环输出数据

时间:2015-03-06 17:40:37

标签: loops plsql nested dbms-output

我正在尝试找到一个代码来创建一个如...的框 XXX XXX XXX (exp.3x3)取决于用户输入的行和高度变量。我的嵌套循环无法正常工作。我能帮忙吗?

继承人代码......

Set ServerOutput on;
Declare

  RectangleHeight Number(2):=5;
  RectangleWidth Number(2):=;
  RowCount Number(1) :=0;
  ColumnCount Number(1) :=0;
 Begin 
Loop 
Exit When RowCount>=RectangleHeight;
    Loop
    Exit When ColumnCount>=RectangleWidth;
    dbms_output.put_line('X');  
    ColumnCount := ColumnCount+1;
    End Loop;
RowCount := RowCount+1;
End Loop;


End;

1 个答案:

答案 0 :(得分:0)

对于循环而言,Nothings确实是错误的,因为逻辑需要稍微调整一下 首先,你在第5行遇到语法错误:RectangleWidth Number(2):=;
解决我们还有一些问题需要解决。

1)您在循环的宽度部分中的每个\n之后放置一个新行X。这应该是没有新行的单X 2)输出对象宽度后,ColumnCount变量会发生什么? 3)输出整行后,如何进入新行?

带注释的示例代码:

SET ServerOutput ON;
DECLARE
  RectangleHeight NUMBER(2) :=5;
  RectangleWidth  NUMBER(2) :=9; -- FIXED SYNTAX ERROR
  RowCount        NUMBER(1) :=0;
  ColumnCount     NUMBER(1) :=0;
BEGIN
  LOOP
    EXIT WHEN RowCount>=RectangleHeight;
    LOOP
      EXIT WHEN ColumnCount>=RectangleWidth;
        dbms_output.put('X'); -- DON'T PUT A NEW LINE, JUST USE PUT
        ColumnCount := ColumnCount+1;
    END LOOP;
    ColumnCount := 0; -- AFTER A SUCCESSFUL ROW IS OUTPUT, WE RESET OUR COLUMN COUNTER
    RowCount := RowCount+1;
    dbms_output.put_line(null); -- JUST OUTPUTTING A BLANK LINE
  END LOOP;
END;
/

输出使用59分别作为高度和宽度的输入:

XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX

我觉得这是作业,但我总是喜欢这些视觉问题。