SQLPLUS支持前置行号 [转帖]_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4059 | 回复: 0   主题: SQLPLUS支持前置行号 [转帖]        下一篇 
wayne
注册用户
等级:中校
经验:1690
发帖:221
精华:0
注册:2011-7-21
状态:离线
发送短消息息给wayne 加好友    发送短消息息给wayne 发消息
发表于: IP:您无权察看 2011-9-15 10:09:56 | [全部帖] [楼主帖] 楼主

前两天看到开发版00的帖子:http://www.itpub.net/thread-1424999-1-5.html,sqlplus这种支持前置行号的方式也是第一次看到,今天有点空,简单记录一下。

其实简单的说起来,就是一个前置行号的问题,sqlplus的编辑是支持输入行号的,不过将行号与内容放在一起,sqlplus居然也可以识别,还是第一次看到。

SQL> CREATE
2
SQL> 2


SP2-0226: 行号 无效

SQL> 2 TABLE
SQL> L
1 CREATE
2* TABLE
SQL>


对于sqlplus的命令行编辑方式而言,如果直接给出行号的方式,sqlplus会将当前行置为输入的行号的这一行,由于目前输入的行并不存在,因此这里报错。

而将行号前置的做法,可以直接将输入作为目标行写入。

文章中曾经提到的空行实际上是必须的,因为空行会使前面的SQL结束,这样对于sqlplus来说,输入的数值才是前置行号,否则,这个数值就会被当做输入内容的一部分,见下面的例子:

SQL> CREATE
2 2 T
3 .
SQL> L
1 CREATE
2* 2 T
SQL>


另外,这个前置行号不一定是连续的,只要大于现有的行,就能保证新输入的结果在最后一行出现:

SQL> CREATE
2
SQL> 5 TABLE
SQL> 10 T
SQL> 20 (ID NUMBER)
SQL> L
1 CREATE
2 TABLE
3 T
4* (ID NUMBER)


但是这种前置行号必须要递增,才能保证新输入的结果追加到sqlplus保存的SQL的尾部,否则就会改写前面的内容:

SQL> CREATE
2
SQL> 5 TABLE
SQL> 10 T
SQL> 2 TYPE
SQL> L
1 CREATE
2 TYPE
3* T


这种方式是sqlplus行编辑的一种快速添加修改指定行的方法,不过以前在用sqlplus的时候一直没有发现这种功能。




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论