编写健壮的PL/SQL代码(一):同字段同类型、%TYPE、SUBTYPE

      对每天繁重的开发任务和交付工期的压力
     我们不会花太多的时间(更多的时候是根本没时间去考虑或经验不够丰富)考虑自己的代码在未来会如何?
     或者说在相关环境变化后还能否工作?面对需求变化被修改的量有多大?
     说的直白一点,就我们写出的代码没有前瞻性,不够健壮,自适应能力太差
     将来整个业务系统中某一个模块的微小改动,都可能导致其他一个或多个协同工作的模块不WORK
     
     每个开发Team对质量的要求"标杆"是不一样的
     高效、稳定、可靠的系统是设计出来的,不是维护出来的
     
     本文通过一个简单的PL/SQL案例来告诉大家设计健壮代码的重要意义
     
     在我以前做的一个系统中,有5-6个核心业务数据库,各个数据库之间因为业务需要,有很多数据需要交互
     特别是一些关键的数据模型在设计上,各个数据库之间含义是一致的
     典型的比如app_col(我这里用这个app_col代表某一类字段)这样的字段
     在各个数据库上的很多表结构中均包含这样的关键字段
     但实际情况却是很让人头疼,我们的设计人员会设计出行行色色的定义来

     比如在ora_a数据库上:


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
解析这段usb枚举 // SUBINF1_DSCR: 0x09, //0 Size of this 0x24, //1 CS_interface 0x01, //2 HEADER subtype 0x00, //3 Revision of class specification-1.0 0x01, //4 0x09, //5 total size of class specific descriptors 0x00, //6 0x01, //7 Number of streaming interfaces 0x01, //8 MIDIStreaming interface 1 belong to this AudioControl interface // INF2_DSCR 0x09, //0 Size of this 0x04, //1 TYPE:interface 0x01, //2 Index of this interface 0x00, //3 Index of this alternate setting 0x02, //4 endpoint number //Have USB in and USB out //0x01, //4 endpoint number //Change for only USB out\no USB IN(2006.12.30) 0x01, //5 audio 0x03, //6 midistreaming 0x00, //7 unused 0x00, //8 Unused // SUBINF2_DSCR: 0x07, //0 Size of this 0x24, //1 CS_interface 0x01, //2 HEADER subtype 0x00, //3 Revision of class specification-1.0 0x01, //4 0x41, //5 total size of class specific descriptors 0x00, //6 // SUBINF3_DSCR: 0x6, 0x24, 0x2, 0x1, 0x1, 0x0, // SUBINF4_DSCR: 0x6, 0x24, 0x2, 0x2, 0x2, 0x0, // SUBINF5_DSCR: 0x09, //0 Size of this 0x24, //1 CS_interface 0x03, //2 HEADER subtype 0x01, //3 Revision of class specification-1.0 0x03, //4 0x01, //5 total size of class specific descriptors 0x02, //6 0x01, //7 Number of streaming interfaces 0x00, //8 MIDIStreaming interface 0 belong to this AudioControl interface // SUBINF6_DSCR: 0x09, //0 Size of this 0x24, //1 CS_interface 0x03, //2 HEADER subtype 0x02, //3 Revision of class specification-1.0 0x04, //4 0x01, //5 total size of class specific descriptors 0x01, //6 0x01, //7 Number of streaming interfaces 0x00, //8 MIDIStreaming interface 1 belong to this AudioControl interface // IN endpoint (mandatory for HID) // Standard int IN endpoint descriptor //EP81_DSCR: 0x09, //0 Size of this descriptor 0x05, //1 Descriptor type: endpoint 0x81, //2 IN endpoint 1 0x02, //3 bulk 0x40, //4 64bytes 0x00, // 0x00, //6 0x00, //7 0x00, //8 // SUBEP81_DSCR: 0x05, 0x25, 0x01, 0x01, 0x03, // OUT endpoint // Standard int OUT endpoint descriptor //EP02_DSCR: 0x09, //0 Size of this descriptor 0x05, //1 Descriptor type: endpoint 0x02, //2 OUT endpoint 2 0x02, //3 bulk 0x40, //4 64bytes //0x10, //16bytes 0x00, // 0x00, //6 0x00, //7 0x00, //8 // SUBEP02_DSCR: 0x05, 0x25, 0x01, 0x01, 0x01
06-10
这段代码是USB设备的描述符信息,描述了该设备的各个接口和端点的信息。具体解析如下: SUBINF1_DSCR: - 第0字节:描述符大小为9字节。 - 第1字节:描述符类型为CS_INTERFACE。 - 第2字节:HEADER子类型。 - 第3字节:类规范版本为1.0。 - 第4字节:总共9字节的类特定描述符大小。 - 第5字节:流接口数为1。 - 第6字节:MIDIStreaming接口。 - 第7、8字节:未使用。 INF2_DSCR: - 第0字节:描述符大小为9字节。 - 第1字节:描述符类型为INTERFACE。 - 第2字节:该接口的索引为1。 - 第3字节:该接口的备用设置索引为0。 - 第4字节:端点号为2。 - 第5字节:音频。 - 第6字节:MIDIStreaming。 - 第7、8字节:未使用。 SUBINF2_DSCR: - 第0字节:描述符大小为7字节。 - 第1字节:描述符类型为CS_INTERFACE。 - 第2字节:HEADER子类型。 - 第3字节:类规范版本为1.0。 - 第4字节:总共65字节的类特定描述符大小。 - 第5字节:未使用。 - 第6字节:未使用。 SUBINF3_DSCR: - 第0字节:描述符大小为6字节。 - 第1字节:未使用。 - 第2字节:未使用。 - 第3字节:未使用。 - 第4字节:未使用。 - 第5字节:未使用。 SUBINF4_DSCR: - 第0字节:描述符大小为6字节。 - 第1字节:未使用。 - 第2字节:未使用。 - 第3字节:未使用。 - 第4字节:未使用。 - 第5字节:未使用。 SUBINF5_DSCR: - 第0字节:描述符大小为9字节。 - 第1字节:描述符类型为CS_INTERFACE。 - 第2字节:HEADER子类型。 - 第3字节:类规范版本为1.0。 - 第4字节:总共1字节的类特定描述符大小。 - 第5字节:流接口数为2。 - 第6字节:MIDIStreaming接口。 - 第7字节:该接口属于AudioControl接口0。 - 第8字节:未使用。 SUBINF6_DSCR: - 第0字节:描述符大小为9字节。 - 第1字节:描述符类型为CS_INTERFACE。 - 第2字节:HEADER子类型。 - 第3字节:类规范版本为1.0。 - 第4字节:总共1字节的类特定描述符大小。 - 第5字节:流接口数为1。 - 第6字节:MIDIStreaming接口。 - 第7字节:该接口属于AudioControl接口1。 - 第8字节:未使用。 EP81_DSCR: - 第0字节:描述符大小为9字节。 - 第1字节:描述符类型为ENDPOINT。 - 第2字节:IN端点号为0x81。 - 第3字节:端点类型为BULK。 - 第4字节:端点最大包长度为64字节。 - 第5、6字节:未使用。 - 第7、8字节:未使用。 SUBEP81_DSCR: - 第0字节:描述符大小为5字节。 - 第1字节:未使用。 - 第2字节:未使用。 - 第3字节:未使用。 - 第4字节:未使用。 EP02_DSCR: - 第0字节:描述符大小为9字节。 - 第1字节:描述符类型为ENDPOINT。 - 第2字节:OUT端点号为2。 - 第3字节:端点类型为BULK。 - 第4字节:端点最大包长度为64字节。 - 第5、6字节:未使用。 - 第7、8字节:未使用。 SUBEP02_DSCR: - 第0字节:描述符大小为5字节。 - 第1字节:未使用。 - 第2字节:未使用。 - 第3字节:未使用。 - 第4字节:未使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值