问一个很基础的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个有什么区别,
分别在什么情况下使用! 展开
PN_CARRIERID BT_CARRIERRATE.N_CARRIERID%TYPE和
PN_CARRIERID NUMBER(6,4)
2个都是属性的声明,但是这2个有什么区别,
分别在什么情况下使用! 展开
4个回答
展开全部
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)
这种写法,一般用于 比较通用的, 不与某个数据库表 相关联的情况。
例如 某个 函数, 返回 运费
传入的是 重量, 返回 运费 。 这一类的。
那么就可以用上面这种变量的定义方式。
定义一个变量 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)
这种写法,一般用于 比较通用的, 不与某个数据库表 相关联的情况。
例如 某个 函数, 返回 运费
传入的是 重量, 返回 运费 。 这一类的。
那么就可以用上面这种变量的定义方式。
展开全部
第二个定义就固定 NUMBER(6,4),以后如果字段长度有什么变更的话,只能修改代码。
第一个定义有灵活性,根据表BT_CARRIERRATE的字段N_CARRIERID的类型来定义变量,
以后如果表BT_CARRIERRATE的字段N_CARRIERID类型变化或者长度变长,第一种定义可以不用修改代码,而第二种定义就得修改代码了。
第一个定义有灵活性,根据表BT_CARRIERRATE的字段N_CARRIERID的类型来定义变量,
以后如果表BT_CARRIERRATE的字段N_CARRIERID类型变化或者长度变长,第一种定义可以不用修改代码,而第二种定义就得修改代码了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
引用声明和直接声明的效果是相同的。只不过
前者是通过“引用”现有的对象的列来定义“TYPE”,提高相关业务数据类型定义的一致性,修改起来也比较方便;
比如你设定系统中CARRIERID是Number(6,4)那么凡是出现CARRIERID的地方,都用引用。
如果你以后想把它设定为Number(5,5)那么只需要修改一个地方。
前者是通过“引用”现有的对象的列来定义“TYPE”,提高相关业务数据类型定义的一致性,修改起来也比较方便;
比如你设定系统中CARRIERID是Number(6,4)那么凡是出现CARRIERID的地方,都用引用。
如果你以后想把它设定为Number(5,5)那么只需要修改一个地方。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询