蟹岛水上乐园怎么样:ORACLE解析机制的问题

来源:百度文库 编辑:九乡新闻网 时间:2024/04/30 11:21:40
分享一下有关ORACLE解析机制的问题,这个问题也困扰了我很长时间,今天总算定位并跟踪到其根本原因,拿出来跟大家分享一下
     1、自定义的参数名不能与数据库表字段名重名!!!
   举例来说:   在一个储存过程中调用一个内部过程块或者函数,希望通过传入的参数在数据采集后,返回自己想要的一些数值。   (1)如果你设置参数名与用到的某张表的字段名相同,就有可能取不到你想要到值。   (2)而单将过程或者函数内的SQL脚本直接通过SQL文本执行没有问题。  (3)手工调试,发现传入的参数值也没问题,就是拿不到你想要的值!
   原因:ORACLE 对过程与函数的解析与单独的SQL文本的解析机制不一样引起的

这一点大家一定要注意,从规范做起,可以更好的防止类似此种情况的发生

2、命名规则,以下是我个人的命名习惯:   表名:                见名知义,如果多个单词组成,单词之前用下划线 _ 隔开   表结构字段名:        见名知义,如果由多个单词组成,单词之间用下划线 _ 隔开,切忌不要与JAVA命名规范混淆   函数名加前缀          F_NAME,(大写)   存储过程名加前缀:    P_NAME;(大写)   TYPE名加前缀:        TYP_NAME;(大写)   SEQUENECE名加前缀:   SEQ_表名(大写)   索引名:              IDX_表名(或者表名缩写)_001 (大写)   全局参数变量加前缀:  v_valueName;   自定义异常加前缀:    e_exceptionName   局部变量:           用JAVA的命名规则(如果不知道,自己查书),这样做的好处是保证与表字段名不会重复
 另外再提醒一点:我这段测试用例的结尾处需要注意:

如果用到实际的数据采购,可以用MAX(id)去替代,因为最大时间对应的ID是相对最大值,前提ID是一个代理主键,即流水号SEQ