Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1037778
  • 博文数量: 159
  • 博客积分: 3063
  • 博客等级: 中校
  • 技术积分: 2703
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-01 01:51
文章分类

全部博文(159)

文章存档

2013年(48)

2012年(111)

分类: Oracle

2012-05-19 23:11:01

默认情况下,在sqlplus中运行的脚本,如包含空行,sqlplus会不认的,对sqlplus空行的出现,最常见的有两种形式,一种是sql语句中有空行,另一种是sql后有空行,如下:

sqlplus运行的sql语句中有空行

  1. --a1.sql   
  2. select sysdate   
  3.   
  4. from    
  5.   
  6. dual;  

sqlplus运行sql语句中无空行,但sql语句与分号(结束符)有空行

  1. --b1.sql   
  2. select sysdate   
  3. from dual   
  4.   
  5. ;  

默认情况下,sqlplus遇空行的处理结果:

SP2-0042: 未知命令 "from" - 其余行忽略。
SP2-0042: 未知命令 "dual" - 其余行忽略。
1 select sysdate
2* from dual
dw@dw>

对于上述两种空行,sqlplus处理方式差不多,第一种只能在sql语句前加上set sqlblanklines on,sqlplus就会正确处理空行;
对于第二种情况,可以加set sqlblanklines on,也可以将分号改为 /,sqlplus就会正确处理空行。

在脚本中加上set sqlblankline on前后,sqlplus遇空行的处理结果:

  1. --a1.sql   
  2. set sqlblankline off  
  3. select sysdate   
  4.   
  5. from    
  6.   
  7. dual   
  8. /   
  9. set sqlblankline on  
  10. select sysdate   
  11.   
  12. from    
  13.   
  14. dual;  

dw@dw>@a1.sql
dw@dw>set sqlblankline off
dw@dw>select sysdate
2
dw@dw>from
SP2-0042: 未知命令 “from” – 其余行忽略。
dw@dw>
dw@dw>dual
SP2-0042: 未知命令 “dual” – 其余行忽略。
dw@dw>/
select sysdate
*
第 1 行出现错误:
ORA-00923: 未找到要求的 FROM 关键字

dw@dw>set sqlblankline on
dw@dw>select sysdate
2
3 from
4
5 dual;

SYSDATE
——————-
2011-06-27 23:42:32

已选择 1 行。

  1. --b1.sql   
  2. set sqlblankline off  
  3. select sysdate   
  4. from dual   
  5.   
  6. /   
  7.   
  8. set sqlblankline on  
  9. select sysdate   
  10. from dual   
  11.   
  12. ;  

如果在sql结尾出现空行,可以用/代替分号,也可以完成对sqlplus 空行的处理。

dw@dw>--b1.sql dw@dw>set sqlblankline off
dw@dw>
dw@dw>select sysdate 2 from dual 3
            SYSDATE
-------------------
2011-06-27 23:42:58
已选择 1 行。
dw@dw>
dw@dw>set sqlblankline on
dw@dw>select sysdate 2 from dual 3 4 5 ;
           SYSDATE
-------------------
2011-06-27 23:42:58
已选择 1 行。
dw@dw>
阅读(4106) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~