如何不换行输出?

xiaoye 2009-11-25 08:07:56
如何用PL-SQL不换行输出内容.例如,我想输出9*9乘法表,2*1=2,2*2=4该怎么输出啊
...全文
1244 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
风云乍起 2010-01-07
  • 打赏
  • 举报
回复
顶一下……
xiaoye 2010-01-06
  • 打赏
  • 举报
回复

declare
v_result varchar2(200);
begin
for i in 1..9 loop
select wm_concat(rpad(i||'*'||rownum||'='||i*rownum,6))into v_result from dual connect by rownum <=i;
dbms_output.put_line(v_result);
end loop;
end;
sxq129601 2009-11-30
  • 打赏
  • 举报
回复
太牛
inthirties 2009-11-29
  • 打赏
  • 举报
回复
好强
BenChiM888 2009-11-28
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 xiaoye 的回复:]
引用 3 楼 wildwave 的回复:
declare
v_result varchar2(200);
begin
for i in 1..9 loop
  select wm_concat(rpad(i||'*'||rownum||'='||i*rownum,6))into v_result from dual connect by rownum <=i;
  dbms_output.put_line(v_result);
end loop;
end;

小弟初学,不太懂,dual是什么表啊?
[/Quote]

oracle不像SqlServer,sql语句中 from 是必须的,否则会报错。
dual表是一个系统表,sys用户的表,表结构如下:
[SYS@ora10gr1#28-11月-09] SQL>desc dual
Name Null? Type
----------------------------------------- -------- ----------------------------
DUMMY VARCHAR2(1)

只有一个字段,是建数据库的时候自动建好的,同时系统会给他建一个公有同义词以方便其他的用户访问。 具体用法如下:
[SYS@ora10gr1#28-11月-09] SQL>select sysdate from dual;

SYSDATE
--------------
28-11月-09

因为dual中只有一条记录,因此只返回一个结果。

雪狼__ 2009-11-28
  • 打赏
  • 举报
回复
狂浪 很强大
xiaoye 2009-11-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wildwave 的回复:]
declare
v_result varchar2(200);
begin
for i in 1..9 loop
  select wm_concat(rpad(i||'*'||rownum||'='||i*rownum,6))into v_result from dual connect by rownum <=i;
  dbms_output.put_line(v_result);
end loop;
end;
[/Quote]
小弟初学,不太懂,dual是什么表啊?
wh62592855 2009-11-28
  • 打赏
  • 举报
回复
唉……看了这个帖子我就想死呀
zymhdboy 2009-11-28
  • 打赏
  • 举报
回复
狂狼果然是牛,鉴定完毕
嘟嘟xo 2009-11-26
  • 打赏
  • 举报
回复
飘~~~~~~~~~~~~~~~~
BenChiM888 2009-11-26
  • 打赏
  • 举报
回复

[SYS@ora10gr1#26-11月-09] SQL>col 顺 format 99
[SYS@ora10gr1#26-11月-09] SQL>col 口诀 format a96
[SYS@ora10gr1#26-11月-09] SQL>select rn 顺,translate(ans,'123456789#=0','一二三四五六七八九十得') as 口诀 from(
2 select a.rn,substr(max(sys_connect_by_path(case when a.rn*b.rn >=10 then b.rn||a.rn||substr(a.rn*b.rn,1,1)||'#'||substr(a.rn*b.rn,2,1) else b.rn||a.rn||'='||a.rn*b.rn end,','))
3 from(select rownum rn from all_objects where rownum<=9)a,
4 (select rownum rn from all_objects where rownum<=9)b
5 where a.rn>=b.rn
6 connect by prior a.rn=a.rn and
7 prior b.rn=b.rn-1
8 start with b.rn=1
9 group by a.rn
10 order by 1
11 );

顺 口诀
--- ------------------------------------------------------------------------------------------------
1 一一得一
2 一二得二,二二得四
3 一三得三,二三得六,三三得九
4 一四得四,二四得八,三四一十二,四四一十六
5 一五得五,二五一十,三五一十五,四五二十,五五二十五
6 一六得六,二六一十二,三六一十八,四六二十四,五六三十,六六三十六
7 一七得七,二七一十四,三七二十一,四七二十八,五七三十五,六七四十二,七七四十九
8 一八得八,二八一十六,三八二十四,四八三十二,五八四十,六八四十八,七八五十六,八八六十四
9 一九得九,二九一十八,三九二十七,四九三十六,五九四十五,六九五十四,七九六十三,八九七十二,九九八十一

9 rows selected.

[SYS@ora10gr1#26-11月-09] SQL>
[SYS@ora10gr1#26-11月-09] SQL>select 顺,replace(replace(口诀,'一十','十'),'二五十','二五一十') 口诀 from(
2 select rn 顺,translate(ans,'123456789#=0','一二三四五六七八九十得') as 口诀 from(
3 select a.rn,substr(max(sys_connect_by_path(case when a.rn*b.rn >=10 then b.rn||a.rn||substr(a.rn*b.rn,1,1)||'#'||substr(a.rn*b.rn,2,1) else b.rn||a.rn||'='||a.rn*b.rn end,','))
4 from(select rownum rn from all_objects where rownum<=9)a,
5 (select rownum rn from all_objects where rownum<=9)b
6 where a.rn>=b.rn
7 connect by prior a.rn=a.rn and
8 prior b.rn=b.rn-1
9 start with b.rn=1
10 group by a.rn
11 order by 1
12 ));

顺 口诀
--- ------------------------------------------------------------------------------------------------
1 一一得一
2 一二得二,二二得四
3 一三得三,二三得六,三三得九
4 一四得四,二四得八,三四十二,四四十六
5 一五得五,二五一十,三五十五,四五二十,五五二十五
6 一六得六,二六十二,三六十八,四六二十四,五六三十,六六三十六
7 一七得七,二七十四,三七二十一,四七二十八,五七三十五,六七四十二,七七四十九
8 一八得八,二八十六,三八二十四,四八三十二,五八四十,六八四十八,七八五十六,八八六十四
9 一九得九,二九十八,三九二十七,四九三十六,五九四十五,六九五十四,七九六十三,八九七十二,九九八十一

9 rows selected.

[SYS@ora10gr1#26-11月-09] SQL>




wzj167 2009-11-26
  • 打赏
  • 举报
回复
达人啊!
Adebayor 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wildwave 的回复:]
SQL codeselectreplace(substr(max(sys_connect_by_path(口诀,'#')),2),'#',chr(10))from(select a.rn,
substr(max(sys_connect_by_path(casewhen a.rn*b.rn>=10then
substr(translate(b.rn||'*'||a.rn||'='||a.rn*b.rn,'1234567890*=','一二三四五六七八九十'),1,casewhen mod(a.rn*b.rn,10)=0or a.rn*b.rn>20then3else2end)||'十'||
translate(mod(a.rn*b.rn,10),'1234567890','一二三四五六七八九')else translate(b.rn||'*'||a.rn||'='||a.rn*b.rn,'123456789=*','一二三四五六七八九得')end
,',')),2) 口诀from(select rownum rnfrom all_objectswhere rownum<=9)a,
(select rownum rnfrom all_objectswhere rownum<=9)bwhere a.rn>=b.rn
connectby prior a.rn=a.rnand prior b.rn=b.rn-1
startwith b.rn=1groupby a.rn)
startwith rn=1
connectby prior rn=rn-1

一一得一
一二得二,二二得四
一三得三,二三得六,三三得九
一四得四,二四得八,三四十二,四四十六
一五得五,二五一十,三五十五,四五二十,五五二十五
一六得六,二六十二,三六十八,四六二十四,五六三十,六六三十六
一七得七,二七十四,三七二十一,四七二十八,五七三十五,六七四十二,七七四十九
一八得八,二八十六,三八二十四,四八三十二,五八四十,六八四十八,七八五十六,八八六十四
一九得九,二九十八,三九二十七,四九三十六,五九四十五,六九五十四,七九六十三,八九七十二,九九八十一
[/Quote]
哈哈 顶起
gislxf 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wildwave 的回复:]
SQL codeselectreplace(substr(max(sys_connect_by_path(口诀,'#')),2),'#',chr(10))from(select a.rn,
substr(max(sys_connect_by_path(casewhen a.rn*b.rn>=10then
substr(translate(b.rn||'*'||a.?-
[/Quote]
哎。。。。让我看着写,我都半天弄不出来,悲剧啊。
maitianhust 2009-11-25
  • 打赏
  • 举报
回复
ZNM,技巧太高了,新人不一定看的懂。
[Quote=引用 7 楼 wildwave 的回复:]
有点兴致,写了个sql

SQL codeselect a.rn,substr(max(sys_connect_by_path(a.rn||'*'||b.rn||'='||a.rn*b.rn,',')),2)from(select rownum rnfrom all_objectswhere rownum<=9)a,
(select rownum rnfrom all_objectswhere rownum<=9)bwhere a.rn>=b.rn
connectby prior a.rn=a.rnand prior b.rn=b.rn-1
startwith b.rn=1groupby a.rnorderby1

RN SUBSTR(MAX(SYS_CONNECT_BY_PATH11*1=122*1=2,2*2=433*1=3,3*2=6,3*3=944*1=4,4*2=8,4*3=12,4*4=1655*1=5,5*2=10,5*3=15,5*4=20,5*5=2566*1=6,6*2=12,6*3=18,6*4=24,6*5=30,6*6=3677*1=7,7*2=14,7*3=21,7*4=28,7*5=35,7*6=42,7*7=4988*1=8,8*2=16,8*3=24,8*4=32,8*5=40,8*6=48,8*7=56,8*8=6499*1=9,9*2=18,9*3=27,9*4=36,9*5=45,9*6=54,9*7=63,9*8=72,9*9=81
SQL codeselect a.rn,
substr(max(sys_connect_by_path(casewhen a.rn*b.rn>=10then
substr(translate(b.rn||'*'||a.rn||'='||a.rn*b.rn,'1234567890*=','一二三四五六七八九十'),1,casewhen mod(a.rn*b.rn,10)=0or a.rn*b.rn>20then3else2end)||'十'||
translate(mod(a.rn*b.rn,10),'1234567890','一二三四五六七八九')else translate(b.rn||'*'||a.rn||'='||a.rn*b.rn,'123456789=*','一二三四五六七八九得')end
,',')),2) 口诀from(select rownum rnfrom all_objectswhere rownum<=9)a,
(select rownum rnfrom all_objectswhere rownum<=9)bwhere a.rn>=b.rn
connectby prior a.rn=a.rnand prior b.rn=b.rn-1
startwith b.rn=1groupby a.rn

RN 口诀1 一一得一6 一六得六,二六十二,三六十八,四六二十四,五六三十,六六三十六2 一二得二,二二得四4 一四得四,二四得八,三四十二,四四十六5 一五得五,二五一十,三五十五,四五二十,五五二十五8 一八得八,二八十六,三八二十四,四八三十二,五八四十,六八四十八,七八五十六,八八六十四3 一三得三,二三得六,三三得九7 一七得七,二七十四,三七二十一,四七二十八,五七三十五,六七四十二,七七四十九9 一九得九,二九十八,三九二十七,四九三十六,五九四十五,六九五十四,七九六十三,八九七十二,九九八十一
[/Quote]
呦呦 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wildwave 的回复:]
SQL codeselectreplace(substr(max(sys_connect_by_path(口诀,'#')),2),'#',chr(10))from(select a.rn,
substr(max(sys_connect_by_path(casewhen a.rn*b.rn>=10then
substr(translate(b.rn||'*'||a.?-
[/Quote]

帅气
maitianhust 2009-11-25
  • 打赏
  • 举报
回复
这个有点小问题。
[Quote=引用 3 楼 wildwave 的回复:]
declare
v_result varchar2(200);
begin
for i in 1..9 loop
  select wm_concat(rpad(i||'*'||rownum||'='||i*rownum,6))into v_result from dual connect by rownum <=i;
  dbms_output.put_line(v_result);
end loop;
end;
[/Quote]
maitianhust 2009-11-25
  • 打赏
  • 举报
回复
厉害
[Quote=引用 7 楼 wildwave 的回复:]
有点兴致,写了个sql

SQL codeselect a.rn,substr(max(sys_connect_by_path(a.rn||'*'||b.rn||'='||a.rn*b.rn,',')),2)from(select rownum rnfrom all_objectswhere rownum<=9)a,
(select rownum rnfrom all_objectswhere rownum<=9)bwhere a.rn>=b.rn
connectby prior a.rn=a.rnand prior b.rn=b.rn-1
startwith b.rn=1groupby a.rnorderby1

RN SUBSTR(MAX(SYS_CONNECT_BY_PATH11*1=122*1=2,2*2=433*1=3,3*2=6,3*3=944*1=4,4*2=8,4*3=12,4*4=1655*1=5,5*2=10,5*3=15,5*4=20,5*5=2566*1=6,6*2=12,6*3=18,6*4=24,6*5=30,6*6=3677*1=7,7*2=14,7*3=21,7*4=28,7*5=35,7*6=42,7*7=4988*1=8,8*2=16,8*3=24,8*4=32,8*5=40,8*6=48,8*7=56,8*8=6499*1=9,9*2=18,9*3=27,9*4=36,9*5=45,9*6=54,9*7=63,9*8=72,9*9=81
SQL codeselect a.rn,
substr(max(sys_connect_by_path(casewhen a.rn*b.rn>=10then
substr(translate(b.rn||'*'||a.rn||'='||a.rn*b.rn,'1234567890*=','一二三四五六七八九十'),1,casewhen mod(a.rn*b.rn,10)=0or a.rn*b.rn>20then3else2end)||'十'||
translate(mod(a.rn*b.rn,10),'1234567890','一二三四五六七八九')else translate(b.rn||'*'||a.rn||'='||a.rn*b.rn,'123456789=*','一二三四五六七八九得')end
,',')),2) 口诀from(select rownum rnfrom all_objectswhere rownum<=9)a,
(select rownum rnfrom all_objectswhere rownum<=9)bwhere a.rn>=b.rn
connectby prior a.rn=a.rnand prior b.rn=b.rn-1
startwith b.rn=1groupby a.rn

RN 口诀1 一一得一6 一六得六,二六十二,三六十八,四六二十四,五六三十,六六三十六2 一二得二,二二得四4 一四得四,二四得八,三四十二,四四十六5 一五得五,二五一十,三五十五,四五二十,五五二十五8 一八得八,二八十六,三八二十四,四八三十二,五八四十,六八四十八,七八五十六,八八六十四3 一三得三,二三得六,三三得九7 一七得七,二七十四,三七二十一,四七二十八,五七三十五,六七四十二,七七四十九9 一九得九,二九十八,三九二十七,四九三十六,五九四十五,六九五十四,七九六十三,八九七十二,九九八十一
[/Quote]
小灰狼W 2009-11-25
  • 打赏
  • 举报
回复
select replace(substr(max(sys_connect_by_path(口诀,'#')),2),'#',chr(10)) from(
select a.rn,
substr(max(sys_connect_by_path(
case when a.rn*b.rn>=10 then
substr(translate(b.rn||'*'||a.rn||'='||a.rn*b.rn,'1234567890*=','一二三四五六七八九十'),1,
case when mod(a.rn*b.rn,10)=0 or a.rn*b.rn>20 then 3 else 2 end)||'十'||
translate(mod(a.rn*b.rn,10),'1234567890','一二三四五六七八九')
else translate(b.rn||'*'||a.rn||'='||a.rn*b.rn,'123456789=*','一二三四五六七八九得')end
,',')),2) 口诀
from(select rownum rn from all_objects where rownum<=9)a,
(select rownum rn from all_objects where rownum<=9)b
where a.rn>=b.rn
connect by prior a.rn=a.rn
and prior b.rn=b.rn-1
start with b.rn=1
group by a.rn)
start with rn=1
connect by prior rn=rn-1

一一得一
一二得二,二二得四
一三得三,二三得六,三三得九
一四得四,二四得八,三四十二,四四十六
一五得五,二五一十,三五十五,四五二十,五五二十五
一六得六,二六十二,三六十八,四六二十四,五六三十,六六三十六
一七得七,二七十四,三七二十一,四七二十八,五七三十五,六七四十二,七七四十九
一八得八,二八十六,三八二十四,四八三十二,五八四十,六八四十八,七八五十六,八八六十四
一九得九,二九十八,三九二十七,四九三十六,五九四十五,六九五十四,七九六十三,八九七十二,九九八十一
crazylaa 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wildwave 的回复:]
顺序没弄好

SQL codeselect a.rn,
substr(max(sys_connect_by_path(casewhen a.rn*b.rn>=10then
substr(translate(b.rn||'*'||a.rn||'='||a.rn*b.rn,'1234567890*=','一二三四五六七八九十'),1,casewhen mod(a.rn*b.rn,10)=0or a.rn*b.rn>20then3else2end)||'十'||
translate(mod(a.rn*b.rn,10),'1234567890','一二三四五六七八九')else translate(b.rn||'*'||a.rn||'='||a.rn*b.rn,'123456789=*','一二三四五六七八九得')end
,',')),2) 口诀from(select rownum rnfrom all_objectswhere rownum<=9)a,
(select rownum rnfrom all_objectswhere rownum<=9)bwhere a.rn>=b.rn
connectby prior a.rn=a.rnand prior b.rn=b.rn-1
startwith b.rn=1groupby a.rnorderby1

RN 口诀1 一一得一2 一二得二,二二得四3 一三得三,二三得六,三三得九4 一四得四,二四得八,三四十二,四四十六5 一五得五,二五一十,三五十五,四五二十,五五二十五6 一六得六,二六十二,三六十八,四六二十四,五六三十,六六三十六7 一七得七,二七十四,三七二十一,四七二十八,五七三十五,六七四十二,七七四十九8 一八得八,二八十六,三八二十四,四八三十二,五八四十,六八四十八,七八五十六,八八六十四9 一九得九,二九十八,三九二十七,四九三十六,五九四十五,六九五十四,七九六十三,八九七十二,九九八十一
[/Quote]

偶像啊
加载更多回复(8)

17,078

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧