Chinaunix首页 | 论坛 | 博客
  • 博客访问: 580855
  • 博文数量: 80
  • 博客积分: 2393
  • 博客等级: 大尉
  • 技术积分: 1434
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-03 21:46
个人简介

己所不欲勿施于人!

文章分类

全部博文(80)

文章存档

2017年(1)

2016年(9)

2014年(1)

2013年(17)

2012年(5)

2011年(13)

2010年(9)

2009年(8)

2008年(17)

分类: Oracle

2016-08-08 11:33:37

关于带BOM和不带BOM的区别,大家可以看一下知乎上的讨论。
链接: 

最近开发过程中遇到,windows下编写的SQL文件,在linux下执行时,总是报错。

在文件的开头,无论是使用中文注释还是英文注释,甚至去掉注释,也会SP2-0734: unknown command beginning "?declare ..." - rest of line ignored. 的错误。
如下是文件开头部分

点击(此处)折叠或打开

  1. --create tablespace
  2. declare
  3. v_tbs_name varchar2(200):='hytpdtsmsshistorydb';
  4. begin
报错如下:

点击(此处)折叠或打开

  1. SP2-0734: unknown command beginning "?--create ..." - rest of line ignored.


  2. PL/SQL procedure successfully completed.
网上没有找到类似问题的解决办法,且文件编码确认已经更改为utf-8,该问题困惑了我很久。
最后查看一下BOM与 no BOM的区别,尝试更改为no BOM,居然就没有再出现错误。

查看文件的编码,正常文件与报错文件的区别在于:with BOM

点击(此处)折叠或打开

  1. [oracle@localhost Oracle_proc]$ file *
  2. bill_query_proc.sql: UTF-8 Unicode C program text
  3. crt_tab_hytpdtsmsshistorydb.sql: UTF-8 Unicode (with BOM) text 
可以通过两种方法修改文件的编码类型:
1.使用VI修改文件的编码类型
:set encoding = utf-8
:set nobom

2.使用windows下的ultraedit,另存为 UTF-8 -无 BOM

修改完成后,无论使用中文,还是英文,或者去掉注释,都能正常执行。

阅读(11007) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~