首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Oracle频道
中国IT教育
Google
首页 入门基础 安装配置 体系架构 PLSQL 备份恢复 性能调优 开发技术 资讯动态 考试认证 下载 专题 讨论
您现在的位置: 中国IT实验室 >> Oracle >> PLSQL >> 正文

写PL/SQL程序时碰到的一些问题


1.有for update类型的Cursor
定义Cursor时,加了for update,因为需要打开cursor后还要对这些数据进行修改和删除,
但在修改和删除数据后在关闭cursor前就commit,就出现了下面的错误:
ORA-01002: 读取违反顺序
ORA-06512: 在"JWGL.PCKGSTUDSLTCOURSE", line 62
ORA-06512: 在line 2

Error: ORA-06550: 第 2 行, 第 0 列:
PLS-00103: 出现符号 "end-of-file"在需要下列之一时:
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
《a single-quoted SQL string》 pipe

刚开始还以为是因为我嵌套select子句,而不能加for update。
后来才发现是因我在修改删除了数据马上commit后,又马上从cursor中fetch数据。
其实在打开有for update的cursor时,系统会给取出的数据加上排他锁(exclusive),
这样在这个锁释放前其他用户不能对这些记录作update、delete和加锁。
而我一旦执行了commit,锁就释放了,游标也变成无效的,再去fetch数据时就出现错误了。
因而要把commit放在循环外,等到所有数据处理完成后再commit,然后关闭cursor.

2.如何在一个对象类型的方法中对该对象的属性进行赋值
在一般情况下,调用一个对象的方法时,对象自己SELF是以IN类型的参数传进去的,因此不能
对对象的属性进行修改否则会出现下面的错误。

Error: PLS-00363: 表达式 'SELF' 不能用作赋值目标
Line: 26
Text: setRoundNO(vSltCourseCalendar.getRoundNO());

Error: PL/SQL: Statement ignored
Line: 26
Text: setRoundNO(vSltCourseCalendar.getRoundNO());
Trying to compile an object in Oracle 9i.
Why is this throwing an exception?
Does anyone have a clue? Or all of you as puzzled as me? Any experts?

Throws error:
PLS-00363: expression 'SELF.ATTRIB_NUMBER' cannot be used as an assignment target

但可以通过把SELF以IN OUT方式传进去,然后在方法内就能对对象属性进行赋值了。
MEMBER FUNCTION TEST_FUNCTION(SELF IN OUT TEST_OBJECT) RETURN NUMBER

 

【责编:landss】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
 社区讨论
 博客论点
 频道精选
 Oracle频道相关导航