问一个很基础的oracle问题: 10

属性的声明:PN_CARRIERIDBT_CARRIERRATE.N_CARRIERID%TYPE和PN_CARRIERIDNUMBER(6,4)2个都是属性的声明,但是... 属性的声明:
PN_CARRIERID BT_CARRIERRATE.N_CARRIERID%TYPE和
PN_CARRIERID NUMBER(6,4)
2个都是属性的声明,但是这2个有什么区别,
分别在什么情况下使用!
展开
 我来答
wangzhiqing999
2011-10-10 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3226万
展开全部
PN_CARRIERID BT_CARRIERRATE.N_CARRIERID%TYPE
定义一个变量 PN_CARRIERID , 数据类型是和 BT_CARRIERRATE 表 的 N_CARRIERID 字段一样

PN_CARRIERID NUMBER(6,4)
定义一个变量 PN_CARRIERID 数据类型, 是 NUMBER(6,4)

一般来说
PN_CARRIERID BT_CARRIERRATE.N_CARRIERID%TYPE
这种写法,用在 业务逻辑比较固定的情况下。
例如 订单处理
这个逻辑, 就是插入 订单表的
那么里面定义的变量, 就可以定义为 与 订单表的 字段类型一致。
那么万一,将来业务逻辑发生变化, 比如开发处理,设计不足,订单金额只能是 NUMBER(6,2) 的。
现在业务做大了,那个订单金额的数据类型,要修改为 NUMBER(8, 2)
使用这种 变量的数据类型 为 表.字段 的数据类型的方式。
可以只修改表, 而不用修改 存储过程 等信息。

至于
PN_CARRIERID NUMBER(6,4)
这种写法,一般用于 比较通用的, 不与某个数据库表 相关联的情况。
例如 某个 函数, 返回 运费
传入的是 重量, 返回 运费 。 这一类的。
那么就可以用上面这种变量的定义方式。
luoxuanjin
2011-10-10 · TA获得超过252个赞
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:172万
展开全部
第二个定义就固定 NUMBER(6,4),以后如果字段长度有什么变更的话,只能修改代码。
第一个定义有灵活性,根据表BT_CARRIERRATE的字段N_CARRIERID的类型来定义变量,
以后如果表BT_CARRIERRATE的字段N_CARRIERID类型变化或者长度变长,第一种定义可以不用修改代码,而第二种定义就得修改代码了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bbwell_com
2011-10-10 · TA获得超过101个赞
知道小有建树答主
回答量:152
采纳率:0%
帮助的人:139万
展开全部
引用声明和直接声明的效果是相同的。只不过
前者是通过“引用”现有的对象的列来定义“TYPE”,提高相关业务数据类型定义的一致性,修改起来也比较方便;
比如你设定系统中CARRIERID是Number(6,4)那么凡是出现CARRIERID的地方,都用引用。
如果你以后想把它设定为Number(5,5)那么只需要修改一个地方。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
丑到车胎都怕我
2011-10-10
知道答主
回答量:39
采纳率:0%
帮助的人:14.8万
展开全部
围观下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式