加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 电商 > 正文

写PL/SQL措施时遇到的一些题目

发布时间:2018-08-17 06:45:08 所属栏目:电商 来源:站长网
导读:记的前次写PL/SQL措施照旧刚结业不久,还用的是Oracle 7 for Novell 其后只是无意用一下oralce, PL/SQL的一些语法已经全忘了, 这不,遇到好些初级的题目,服膺下,但愿不会再健忘。 1.有for update范例的Cursor 界说Cursor时,加了for update,由于必要打

记的前次写PL/SQL措施照旧刚结业不久,还用的是Oracle 7 for Novell
其后只是无意用一下oralce, 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

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读