用pl/sql 输出九九乘法表

补充下用 WHILE循环 for我也能做出来

经过测试,可以直接使用 

第一、在Oracle9i下的脚本: 

SELECT to_char(flag)||'=1*'||to_char(flag) "1" , 

CASE WHEN flag>1 THEN to_char(flag*2)||'=2*'||to_char(flag) ELSE '' END "2", 

CASE WHEN flag>2 THEN to_char(flag*3)||'=3*'||to_char(flag) ELSE '' END "3", 

CASE WHEN flag>3 THEN to_char(flag*4)||'=4*'||to_char(flag) ELSE '' END "4", 

CASE WHEN flag>4 THEN to_char(flag*5)||'=5*'||to_char(flag) ELSE '' END "5", 

CASE WHEN flag>5 THEN to_char(flag*6)||'=6*'||to_char(flag) ELSE '' END "6", 

CASE WHEN flag>6 THEN to_char(flag*7)||'=7*'||to_char(flag) ELSE '' END "7", 

CASE WHEN flag>7 THEN to_char(flag*8)||'=8*'||to_char(flag) ELSE '' END "8", 

CASE WHEN flag>8 THEN to_char(flag*9)||'=9*'||to_char(flag) ELSE '' END "9" 

FROM ( 

SELECT 1 flag FROM dual 

UNION ALL 

SELECT 2 FROM dual 

UNION ALL 

SELECT 3 FROM dual 

UNION ALL 

SELECT 4 FROM dual 

UNION ALL 

SELECT 5 FROM dual 

UNION ALL 

SELECT 6 FROM dual 

UNION ALL 

SELECT 7 FROM dual 

UNION ALL 

SELECT 8 FROM dual 

UNION ALL 

SELECT 9 FROM dual) a 

二、在sqlserver下脚本: 

select convert(varchar(10),flag)+'=1*'+convert(varchar(10),flag) [1], 

case when flag>1 then convert(varchar(10),flag*2)+'=2*'+convert(varchar(10),flag) else '' end [2], 

case when flag>2 then convert(varchar(10),flag*3)+'=3*'+convert(varchar(10),flag) else '' end [3], 

case when flag>3 then convert(varchar(10),flag*4)+'=4*'+convert(varchar(10),flag) else '' end [4], 

case when flag>4 then convert(varchar(10),flag*5)+'=5*'+convert(varchar(10),flag) else '' end [5], 

case when flag>5 then convert(varchar(10),flag*6)+'=6*'+convert(varchar(10),flag) else '' end [6], 

case when flag>6 then convert(varchar(10),flag*7)+'=7*'+convert(varchar(10),flag) else '' end [7], 

case when flag>7 then convert(varchar(10),flag*8)+'=8*'+convert(varchar(10),flag) else '' end [8], 

case when flag>8 then convert(varchar(10),flag*9)+'=9*'+convert(varchar(10),flag) else '' end [9] 

from 

(select 1 flag 

union all 

select 2 

union all 

select 3 

union all 

select 4 

union all 

select 5 

union all 

select 6 

union all 

select 7 

union all 

select 8 

union all 

select 9) a

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-05-24
-- 九九乘法表

SELECT MAX(DECODE(N2, 1, NN)) NN1,
MAX(DECODE(N2, 2, NN)) NN2,
MAX(DECODE(N2, 3, NN)) NN3,
MAX(DECODE(N2, 4, NN)) NN4,
MAX(DECODE(N2, 5, NN)) NN5,
MAX(DECODE(N2, 6, NN)) NN6,
MAX(DECODE(N2, 7, NN)) NN7,
MAX(DECODE(N2, 8, NN)) NN8,
MAX(DECODE(N2, 9, NN)) NN9
FROM (SELECT T1.N N1,
T2.N N2,
T1.N * T2.N,
T1.N || '*' || T2.N || '=' || T1.N * T2.N NN
FROM (SELECT LEVEL N FROM DUAL CONNECT BY LEVEL <= 9) T1,
(SELECT LEVEL N FROM DUAL CONNECT BY LEVEL <= 9) T2
WHERE T1.N <= T2.N)
GROUP BY N1
ORDER BY N1 DESC

第2个回答  推荐于2017-11-27
利用while 循环:

set serveroutput on;
declare
i int;
j int;
begin
i:=1;
j:=1;
while i < 10
loop
while j <= i
loop
dbms_output.put(i||'*'||j||'=');
if length(i*j) = 1 and j!=1 then
dbms_output.put(' ');
end if;
dbms_output.put(i*j||' ');
j:=j+1;
end loop;
j:=1;
i:=i+1;
dbms_output.put_line(' ');
end loop;
end;
/

***********************************
利用for循环:

set serveroutput on;
declare
begin
for i in 1..9 loop
for j in 1 .. i loop
dbms_output.put(i);
dbms_output.put('*');
dbms_output.put(j);
dbms_output.put('=');
if length(i*j) = 1 and j!=1 then
dbms_output.put(' ');
end if;
dbms_output.put(i*j);
dbms_output.put(' ');
end loop;
dbms_output.put_line(' ');
end loop;
end;
/

---
以上,希望对你有所帮助。本回答被提问者采纳

用pl\/sql 输出九九乘法表
SELECT to_char(flag)||'=1*'||to_char(flag) "1" ,CASE WHEN flag>1 THEN to_char(flag*2)||'=2*'||to_char(flag) ELSE '' END "2",CASE WHEN flag>2 THEN to_char(flag*3)||'=3*'||to_char(flag) ELSE '' END "3",CASE WHEN flag>3 THEN to_char(flag*4)||'...

用T-SQL语句怎样实现打印九九乘法表?
使用T-SQL语句打印九九乘法表的代码如下:--定义三个变量(行、列、输出字符串) 通过横竖 九行九列 进行循环输出 DECLARE @a smallint,@b smallint,@str varchar(1000)set @a=1 WHILE @a<=9 BEGIN SET @b=1 SET @str=''WHILE @b<=@a BEGIN SELECT @str=@str+convert(varchar(1),@...

oracle写一存储过程,实现九九乘法表,要求有一个输入函数p_num,它可以...
create or replace procedure test(innum in number) is m number;begin if (innum < 1 or innum > 9) then dbms_output.put_line('input number error,must between 1 to 9!');return;end if;for i in 1..innum loop for j in 1..i loop m:=j*i;dbms_output.put(''||j||...

编写程序,在屏幕上显示九九乘法表,并将九九乘法表按指定格式存储在指定...
编写程序,在屏幕上显示九九乘法表,并将九九乘法表按指定格式存储在指定文件中,文件名从键盘输入。 九九 10 r9000student | 浏览1371 次 |举报 我有更好的答案推荐于2017-12-16 20:33:17 最佳答案 以下是C++实现,具体思想就是两个循环嵌套#include <iostream> using namespace std; int main() { int i...

求大神写点SQL语句,简单一个存储过程,根据部门输出员工编号,员工姓名...
--1.还记得怎么打印九九乘法表吗?还知道什么是嵌套for循环吗?还记得外循环一次,内循环循环多次吗?--2.用两个for来使用游标取值,先取部门表中的部门编号和部门名称的值,然后用取出来的部门编号的值在员工表中当where条件后面的条件来取同一部门下的所有的员工信息 --3.游标:首先声明两个游标,...

想深入学习C#语言,有没有达人知道C#的好的资料呢?
46. 编程输出1000以内的所有素数。47. 编写一个程序,对输入的4个整数,求出其中最大值和最小值。48. 分别用for,while,do…while语句编写程序,实现求前n个自然数之和。49. 编程输出九九乘法表。50. 定义一个行数和列数相等的二维数组,并执行初始化,然后计算该数级两条对角线上的元素值之和。51. 建立一个...

Java经典编程300例的目录
输出九九乘法表 35实例027 使用while循环计算1+1\/2!+1\/3!…1\/20! 36实例028 使用for循环输出空心的菱形 38实例029 终止循环体 39实例030 循环体的过滤器 41第5章 数组及其常用操作 43实例031 获取一维数组的最小值 44实例032 将二维数组中的行列互换 45实例033 利用数组随机抽取幸运观众 47实例034 用数组...

plsql输出九九乘法表如何换行?
你用dbms_output.put 输出,dbms_output.put_line 打印null换行 以下是我自己写的plsql 块 希望能对你有帮助!SQL> ho more 51.sql declare m number;begin for i in 1..9 loop for j in 1..i loop m := i*j;--dbms_output.put('*');dbms_output.put(i||'*'||j||'='||m...

用T-SQL语句怎样实现打印九九乘法表?
使用T-SQL语句打印九九乘法表的代码如下:--定义三个变量(行、列、输出字符串) 通过横竖 九行九列 进行循环输出 DECLARE @a smallint,@b smallint,@str varchar(1000)set @a=1 WHILE @a<=9 BEGIN SET @b=1 SET @str=''WHILE @b<=@a BEGIN SELECT @str=@str+convert(varchar(1),@...

oracle中怎么打印九九乘法表
begin Dbms_Output.put_line('打印九九乘法表:');for i in 1..9 loop for j in 1..i loop Dbms_Output.put(i||'*'||j||'='||i*j);dbms_output.put(' ');end loop;dbms_output.new_line;end loop;end;

相似回答