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

ORA-06550: line 1, column 7:
PLS-00103: Encountered the symbol "" when expecting one of the following:


昨天一个新的项目要上线,可在链接数据库是总报下面的错误,这个项目是在oracle11g的环境下开发的,线上生产系统的用的oracle10g系统,应用在链接oracle11g是正常,但在oracle10g就抱如下的错误,根据错误提示是应用提交给oracle的sql(过程和函数)写法不符合oracle的标准,这个错误出现在同步两库的数据时,单独链接oracle10g时,没有任何问题

我们的客户端机器安装了9i和11g的两个oracle客户端来访问数据库,oracle11g

我们的程序员在写程序时,把code写成如下的形式:

 begin
insert into table...;
insert into table...;
insert into table...;
end


还有一个是写法是采用拼接语句的形式,但他在拼接语句加了”换行符“ 

总结错误的原因,在提交给我oracle的批处理sql时,要注意不要添加一些换行符等特殊字符,oracle10g可能不能正常解析语句,oracle11g可能做的解析兼容性更好了。

但我们最后的解决方法是单个sql执行,而不采用批处理执行,结果通过。虽然这会影响性能,但这个小模块执行频率很低

详细错误代码:

Oracle.DataAccess.Client.OracleException ORA-06550: line 1, column 7:
PLS-00103: Encountered the symbol "" when expecting one of the following:
begin case declare exit for goto if loop mod null pragma
raise return select update while with <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge pipe
The symbol "" was ignored.
ORA-06550: line 2, column 453:
PLS-00103: Encountered the symbol "" when expecting one of the following:
begin case declare end exception exit for goto if loop mod
null pragma raise return select update while with
<an identifier> <a double-quoted delimited-i
ORA-06550: line 3, column 453:
PLS-00103: Encountered the symbol "" when expecting one of the following:
-------------------------------------------------


相关知识学习:

关于oci的介绍

当应用程序开发人员需要面向 Oracle 数据库服务器的最强大的接口时,他们将调用 Oracle 调用接口 (OCI)。OCI 提供了对所有 Oracle 数据库功能的最全面的访问。OCI API 中包含了最新的性能、可伸缩性和安全性特性。

使用 OCI 客户群非常庞大,包括:

开发复杂数据库应用程序的财富 500 强中的大客户。

调整 Oracle 数据库以适应它们的需求的 ISV

如果编写 Oracle 数据库应用程序,则很可能要依靠 OCI。依赖 OCI 的某些类型的应用程序包括:

执行 SQL 的 PL/SQL 应用程序

使用 OCCI 的 C++ 应用程序

使用基于 OCI 的 JDBC 驱动程序的 Java 应用程序

使用 ODBC 驱动程序的 C 应用程序

使用 OLEDB 驱动程序的 VB 应用程序

Pro*C 应用程序

分布式 SQL

Oracle 10g 中的 OCI 新特性包括:

即时客户端

IEEE 754 浮点数支持 (binary_float/binary_double)

无限大小的 LOB 支持

Instant Client 使 ISV 和客户能够快速安装和部署 Oracle 应用程序,而不会遇到任何麻烦。请访问 Instant Client 站点了解更多信息。

开发人员应当采用的 Oracle 9i 中的某些更重要的可伸缩性和性能特性包括:

连接池

会话池

语句高速缓存

可滚动游标 

OCI 的主要优点包括:

最新 Oracle 数据库服务器特性中的即时可用性

企业级的性能和可伸缩性

强健的安全模型

在所有运行 Oracle 的平台上的可移植性

对于一般的中小企业来说,数据量也不是很大,要用oci也有些难度,直接采用oracle的客户端就可以

如何配置才能使客户端连到数据库:

要使一个客户端机器能连接oracle数据库,需要在客户端机器上安装oracle的客户端软件,唯一的例外就是java连接数据库的时候,可以用jdbc thin模式,不用装oracle的客户端软件。假如你在机器上装了oracle数据库,就不需要在单独在该机器上安装oracle客户端了,因为装oracle数据库的时候会自动安装oracle客户端。

用过sql server数据库然后又用oracle的朋友可能会有这样的疑问:问什么我用sql server的时候不用装

sql server的客户端呢?原因很简单,sql server也是microsoft的,它在操作系统中集成了sql server客户端

---end---


--转自 北京联动北方科技有限公司




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