分享

ORACLE解析机制的问题

 yongcheng.min 2011-03-18
分享一下有关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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多