写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 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |