PLSQL嵌套循环输出数据
PLSQL nested loop to output data
我正在尝试找到一个代码来创建一个框,例如...
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;
循环并没有真正的问题,只是逻辑需要稍微调整一下。
首先,第 5 行出现语法错误:RectangleWidth Number(2):=;
修复我们还有一些问题需要解决。
1) 您在循环宽度部分的每个 X
之后放置了一个新行 \n
。这可能应该是没有新行的单个 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;
/
并且分别使用 5
和 9
作为高度和宽度的输入的输出:
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
我觉得这是作业,但我一直很喜欢这类视觉问题。
我正在尝试找到一个代码来创建一个框,例如... 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;
循环并没有真正的问题,只是逻辑需要稍微调整一下。
首先,第 5 行出现语法错误:RectangleWidth Number(2):=;
修复我们还有一些问题需要解决。
1) 您在循环宽度部分的每个 X
之后放置了一个新行 \n
。这可能应该是没有新行的单个 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;
/
并且分别使用 5
和 9
作为高度和宽度的输入的输出:
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
我觉得这是作业,但我一直很喜欢这类视觉问题。