




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
文件标识 QD 30 08 密级 内部 版本号 Ver1 0 大庆金桥软件开发作业体系大庆金桥软件开发作业体系 OracleOracle 数据库命名编码规范数据库命名编码规范 变更历史变更历史 操作操作责任人责任人日期日期版本版本变更内容变更内容 创建李富华 2010 04 20 无创建文档 编辑周强 2010 04 21 无修改文档 目录目录 1 文档介绍文档介绍 4 1 1文档目的 4 1 2文档范围 4 1 3定义 4 1 4参考资料 4 2 命名规范命名规范 4 2 1一般规则 4 2 2对象命名汇总表 5 3 编码规范编码规范 6 3 1一般性规定 6 3 2CREATE 语句 7 3 3SELECT 语句 7 3 4INSERT 语句 8 3 5UPDATE 语句 8 3 6DELETE 语句 9 3 7游标语句 9 3 8IF 语句 9 3 9简单循环语句 11 3 10FOR 循环语句 11 3 11WHILE 循环语句 11 3 12程序块规范 12 3 13语法规范 12 4 设计规范设计规范 14 4 1一般表设计 14 4 2特殊表设计原则 15 4 3索引设计原则 15 4 4完整性设计原则 15 4 5触发器 15 4 6视图设计 15 4 7性能优化 16 5 书写规范书写规范 20 5 1缩进风格 20 5 2空格及换行 20 6 注释说明注释说明 21 6 1一般性注释 21 6 2函数文本注释 21 7 异常规范异常规范 22 7 1PL SQL异常规范 22 7 2后台验证异常信息规范 23 8 附录附录 23 8 1附一 开发工具 23 8 2附二 预定义异常 24 8 3附三 范式 25 8 3 1 第一范式 25 8 3 2 第二范式 25 8 3 3 第三范式 25 8 3 4 Boyce Codd 范式 26 8 3 5 第四范式 26 8 3 6 第五范式 26 8 3 7 反规范化 26 1 文档介绍文档介绍 1 1 文文档档目目的的 本文档用于指导开发设计人员对 Oracle 数据库进行设计和编码 使用统一的命名 和编码规范 使数据库对象命名及编码风格标准化 可增加程序的可读性 增强系统 的可维护性 提高软件的质量 本文档仅仅针对 Oracle 数据库做的规范 对其他数据库不具有指导意义 1 2 文文档档范范围围 本规范适用于公司范围内所有以 Oracle 作为后台数据库的应用系统和项目开发工 作 对公司 2010 年以前用 Oracle 数据库开发的项目不做限制 1 3 定定义义 无 1 4 参参考考资资料料 2 命名规范命名规范 2 1 一一般般规规则则 Oracle 中的各种数据对象 包括实例 数据库 表空间 表 视图 存储过程 函 数 解发器等的命名都要遵循 Oracle 的标准命名规则 1 以字符打头 30 个字符以内 名称超过长度的情况下适当采用缩写 2 只能包含 A Z a z 0 9 3 不能和同一个表空间下的其他对象重名 4 不能是 Oracle 服务器的保留字 5 数据对象尽量不要使用缩写 如要缩写最好使用容易看懂的缩写 2 2 对对象象命命名名汇汇总总表表 对象对象 对象名对象名前缀前缀范例范例描述描述 表 table t t user 表名长度原则上不超过25 个字符 表 视图 字段 名中不出现复数 创建表 必须要注释 comments 必须要填写 视图 view v v user 如果表名或字段名过长 则用表名或字段名的缩写 序列 sequence s s user 一般索引 normal index i i user userna me field 字段名 遇上 长字段名可采用缩写 唯一索引 unique index i u i u user birt hday 主键 primary key pk pk user useri d 外键 foreign key fk fk student us er userid 簇 cluster cl cl user stude nt 触发器 triger tr i tr u tr d tr iud tr i add user birt hday i insert u update d delete 存储过程 procedure p i p u p d p s p i user birt hday 函数 function f f get usernam e by userid 包及包体 package SELECT col1 col2 col3 col4 col5 col6 col7 col8 col9 col10 FROM sb sbqkxx sb bb011101 WHERE sb sbqkxx czwdbh sb bb czwdbh AND sb sbqkxx swdjbh avc swdjbh AND sb sbqkxx sbsssq avc sbsssq 3 4INSERT 语语句句 关键字用大写 列名和表名采用小写 推荐 语句中嵌入逗号时 在逗号后面加一空格 当逗号是最后一个字符时 把它放在本 行 当语句的同一部分要延续到下一行时 按下列格式排列 当语句中出现括号时 括号的两边不留空格 格式如下 推荐 INSERT INTO VALUES 例如 insert into sm user user id user name login name values p user id p user name p login name insert into sm duty bak duty id duty name created by creation date last updated by last update date disable date select duty id duty name created by creation date last updated by last update date disable date from sm duty where duty id duty id 3 5UPDATE 语语句句 关键字右对齐 格式如下 推荐 UPDATE SET 3 6DELETE 语语句句 格式如下 推荐 DELETE FROM table1 WHERE col1 3 7 游游标标语语句句 格式如下 推荐 程序中使用显示游标 格式如下 OPEN cur name LOOP FETCH cur into EXIT WHEN cur name notfound END LOOP CLOSE cur name 3 8IF 语语句句 条件执行语句 IF ELSE 按以下格式编写 推荐 IF THEN ELSE 或 ELSIF THEN END IF 在 IF THEN 和 ELSE 或 ELSIF 及 ELSE THEN 和 ENDIF 间可包含一条或多条 PL SQL 语句 而不需要加 BEGIN 和 END IF ELSE ENDIF 语句可以嵌套 注意 ELSIF 的写法 if 后的条件要用括号括起来 括号内每行最多两个条件 例如 if v count 1 or v count 2 or v count 5 or v count 6 then select sysdate into v date from dual end if 减少控制语句的检查次数 如在 else if else 控制语句中 对最常用符合条件 尽 量往前被检查到 例如 以下例如不符合规范 假设 v count 1 条件大数情况会被满足 if v count 0 then null elsif v count 1 then null end if 应如下书写 应如下书写 if v count 1 then null elsif v count 0 then null end if 尽量避免使用嵌套的 if 语句 在这种情况应使用多个 if 语句来判断其可能 例如 例如 以下例如不符合规范 if v count 0 then if v flag 0 then null else null end if else v count 1 then if v flag 0 then null else null end if end if 应如下书写 应如下书写 if v count 0 and v flag 0 then null elsif v count 0 and v flag 1 then null elsif v count 1 and v flag 0 then null elsif v count 1 and v flag 1 then null end if 3 9 简简单单循循环环语语句句 LOOP EXIT WHEN END LOOP 3 10FOR 循循环环语语句句 FOR 变量 IN 变量取值范围 LOOP END LOOP 3 11WHILE 循循环环语语句句 WHILE LOOP END LOOP 3 12 程程序序块块规规范范 在 sql 代码块中尽量使用 begin end 语句块 提高代码可读性 对于触发器 存储过程 函数等带名的程序块 要使用块结束标识 如 CREATE OR REPLACE PROCEDURE p get userinfo BEGIN END p get userinfo 此处的过程名 p get userinfo 是可选的 规范要求写上 与 块开始的 CREATE 相对应 3 13 语语法法规规范范 避免隐式的数据类型转换 说明 在书写代码时 必须确定表的结构和表中各个字段的数据类型 特别是书 写查询条件时的字段就更要注意了 例如 以下代码不符合规范 status type 是 number 型数据 select wdj wip entity id from wip wip discrete jobs wdj where wdj status 3 应如下书写 select wdj wip entity id from wip wip discrete jobs wdj where wdj status 3 不要将空的变量值直接与比较运算符 符号 比较 如果变量可能为空 应使用 is null 或 is not null 或 nvl 函数进行比较 例如 以下代码不符合规范 if v user name null then dbms output put line user name is null end if 应该如下书写 if v user name is null then dbms output put line user name is null end if 对于非常复杂的 sql 特别是多层嵌套 带子句或相关的查询 应该先考虑是否设 计不当引起的 对于复杂的一些 sql 可以考虑使用程序实现 原则上遵循一句话只 做一件事情 尽可能地使用相关表字段的类型定义 形如 type rowtype 存储过程中变量的声明应集中在 as 和 begin 关键字之间 不允许在代码中随意定 义变量 定义变量时 完成相同功能模块的变量应放在一起 与不同模块的变形量 应空行隔开 增加代码的可读性 order by 后面字段不唯一时分页会出现问题 分页时如果 order by 后面的字段不 唯一 一定要让 order by 唯一 最佳方案是增加一 pk 如实在没办法则可以追加 rowid order by 后尽量避免使用 rowid 使用 varchar2 代替 varchar 类型 当存储过程有多个分支返回时 若有事务 需确保各个分支都结束了事务 in out 参数应按类别分开书写 不要交叉 对于 out 参数 特别是 nest table record 尽量都带上 nocopy 提高程序的运行效率 聚集函数 max min sum 在没有记录得符合查询条件的情况下返回 null 不会产 生 no data found 异常 原则上不要使用动态 sql 如果非得使用运态 sql 须绑定变量 推荐 尽量不要使用子函数方式实现存储过程 应分别定义 推荐 代码中不建议使用 goto 语句 推荐 确保所的变量和参数都使用到 推荐 确保变量和参数在类型和长度与表数据列类型和长度相匹配 如果与表数据列宽度 不匹配 则当较宽或较大的数据传进来时会产生运行异常 例如 例如 如 fnd users 表 user name 字符宽为 50 当用户名大于 10 时会报错 declare v user name varchar2 10 begin select fu user name into v user name from fnd user fu where fu user id p user id end 当一个 PL SQL 或 SQL 语句中涉及到多个表时 始终使用别名来限定字段名 这 使其它人阅读起来更方便 避免了含议模糊的引用 其中能够别名中清晰地判断出 表名 别名命名时 尽量避逸使用无意义的代号 a b c 而应该有意义 如 表 system items b 对应别名为 msi po headers all 别名对应为 pha 例如 例如 以下编码不符合规范 select wip entity name a wip entity id a date released from wip wip entities b wip wip discrete jobs a where b wip entity id a wip entity id and a status type 3 and a date released trunc sysdate 应如下书写 应如下书写 select we wip entity name wdj wip entity id wdj date released from wip wip entities we wip wip discrete jobs wdj where we wip entity id wdj wip entity id and wdj status type 3 and wdj date released trunc sysdate 4 设计规范设计规范 4 1 一一般般表表设设计计 表空间设计 原则上表空间名与 schema 名一致 其索引所在空间为 schema name index 如 schema 为 INV 则默认的表空间应该为 INV 所对应的索引空间为 INVINDEX tablespace 每个表在创建时候 必须指定所在的表空间 不要采用默认表空间 以防止表建立在 system 空间上 导致性能问题 对于事务比较繁忙的数据表 必 须存放在在该表专用空间中 根据性能需要 可以适当可曾加冗余 4 2 特特殊殊表表设设计计原原则则 分区表 对于数据量比较大的表 根据表数据的属性进行分区 以得到较好的性 能 如果表按某些字段进行增长 则采用按字段值范围攻进行分区 如果表按某个 字段的几个关键值进行分布 则采用列表分区 对于静态表 则采用 hash 分区或 列表分区 在范围分区中 如果数据按某关键字段均衡分由 则采用子分区的复合 分区法 在分区表中不建议使用全局索引 因为 trunc 分区时会导致全局索引失效 造成难 以维护 4 3 索索引引设设计计原原则则 每个索引在创建时 必须指定表空间 不要采用默认表空间 以防止索引建立在 system 空间和非索引专用空间 以减少 IO 冲突 提高性能 4 4 完完整整性性设设计计原原则则 主键约束 原则上所有的数据表都要有主键 对于数据量比较大的表 要求指定 索引字段 外键关联 对于关联两个表字段 一般应该分别建立主键 外键 实际是否建立 外键 根据对数据完整性的要求决定 为了提高性能 对于数据量较大的表要求对 外键建立索引 对于有要求级联删除属性的外键 必须指定 on delete cascade Null 值 对于字段能否为 null 应该在 sql 建表脚本中明确指定 不应该使用缺 省 由于 null 值在参加任何计算时 结果均为 null 所以在程序中必须用 nvl 函 数把可能为 null 值的字段或变量转换非 null 的默认值 Check 条件 对于字段有检查性约束 需指定 check 原则 4 5 触触发发器器 触发器是一种特殊的存储过程 通过数据表的 DML 操作而触发执行 其作用为 确保数据的完整性和一致性不被破坏而创建 实现数据的完整性约束 说明 触发器的 before 或 after 事务属性的选择时候 对表操作的事务属性必须 与应用程序保持一致 以避免死锁发生 在大型导入表中 尽量避免使用触发器 在系统中不要使用过多的触发器 4 6 视视图图设设计计 尽量使用简单的视图 避免使用复杂的视图 简单视图 数据来自单个表 且无分组 distinct group by 无函数 复杂视图 数据来自多个表 或有分组 有函数 4 7 性性能能优优化化 避名频繁 commit 尤其是把 commit 写在循环体中每次循环都进行 commit 使用绑定变量 避免常量的直接引用 例如 以下书写不符合本规范 insert into sm users user id user name created by creation date values 1 Tang 1 sysdate 建议用如下方式操作 建议用如下方式操作 declare v user id sm users user id type v user name sm users user name type v created by sm users created by type v creation date sm users creation date type begin insert into sm users user id user name created by creation date values v user id v user name v created by v creation date in exists 的使用规范 例如 例如 当有 A B 两个结果集 当结果集 B 很大时 A 较小时 适用 exists 如 select from a where exists select 1 from b where a column b column 当结果集当结果集 A 很大时 很大时 B 很小时 适用很小时 适用 in 如 如 select from a where a column in select b column from b 避免不必要的排序 说明 说明 对查询结果进行排序会大大的降低系统的性能 对于数字型的唯一键值 用序列 sequence 产生 索引的规则 建立索引常用的原则如下 建立索引常用的原则如下 1 表的主键 外键必须有索引 2 1000 行的表应该有索引 3 经常与其它表进行连接的表 在边接字段上应建立索引 4 经常出现在 where 子句中的字段且过滤性极强的 特别是大表的字段 应该 建立索引 5 索引字段 尽量避免值为 null 6 复合索引的建立需要仔细分析 尽量考虑用单字段索引代替 A 正确选择复合索引中的第一个字段 一般是选择性较好的且在 where 子句中常的字段上 B 复合索引的几个字段是否经常同时以 and 方式出现在 where 子句中 单字段查询是否极少其至没有 如果是 则可以建立复合索引 否则考虑 单字段索引 C 如果复合索引中包含的字段经常单独出现在 where 子句中 则分解为 多个单字段索引 D 如果复合索引所包含的字段超过 3 个 那么仔细考虑其必要性 考虑 减少复合的字段 E 如果既有单字段索引 又有这几个字段上的复合索引 一般可以删除 复合索引 7 频繁 DDL 的表 不要建立太多的索引 8 删除无用的索引 避免对执行计划造成负面影响 让 SQL 语句用上合理的索引 原则如下 原则如下 首先 首先 看是否用上了索引 对于该使用索引而没有用上索引的 SQL 语句 应该想 办法用上索引 其次 其次 看是否用上了索引 特别复杂的 SQL 语句 当其中 where 子句包含多个带 有索引的字段时 更应该注意索引的选择是否合理 错误的索引不仅不会带来性能的 提高 相反往往导致性能的降低 针对如何用上合理的索引 以 Oracle 数据中的例子进行说明 任何对列的操作都可能导致全表扫描 这里所谓的操作包括数据库函数 计 算表达式等等 查询时要尽可能将操作移至等式的右边 甚至去掉函数 避免不必要的类型转换 要了解 隐藏 的类型转换 增加查询的范围 限制全范围的搜索 索引选择性低 但数据分布差异很大时 仍然可以利用索引提高效率 Oracle 优化器无法用上合理索引的情况下 利用 hint 强制指定索引 使用复合索引且第一个索引字段没有出现在 where 中时 建议使用 hint 强制 pl sql 使用短路径法 当计算逻辑表达式 即 一旦确定后 pl sql 停止计算表达 式 推荐 not in 的替换写法 推荐 例如 select deptno from dept where deptno not in select deptno from emp 建议写成 建议写成 select deptno from dept emp where dept deptno emp deptno and emp deptno is null like 子句尽量前端匹配 推荐 like 参数使用得非常频繁 因此如果能够对于 like 子句使用索引 将很好地提高查询 的效率 例如 例如 查询城市代码 select from city where city name like ZHEN 修改为修改为 select from city where city name like SHNEZHEN 避免使用 select 语句 说明 不要用 来代替所有字段 应给出字段列表 注 不包含 select coun 例例 如 如 以下不符合规范 insert 语句必须给出字段列表 使用 insert 语句一定要给出要插入的字段列表 这 样即使更改了表结构加了字段也不会使用引用了本表的存储过程失效 从表中同一笔记录中获取记录的字段值 须使用同一 SQL 语句得到 不允许分多 条 SQL 语句 例如 例如 以下不符合此规范 select duty id into v duty id from sm duty where rownum 1 select duty name into v duty name from sm duty where rownum 2 应如下书写 应如下书写 select duty id duty name into v duty id v duty name from sm duty where rownum 1 5 书写规范书写规范 5 1 缩缩进进风风格格 程序块采用缩进风格书写 保证代码清晰易读 风格一致 缩进格数统一为 2 个 必须使用空格 不允许使用 TAB 键 具体语句参考 编码规范 小节 5 2 空空格格及及换换行行 不允许把多个语句写在一行中 即一行只写一条语句 例如 以下书写不符合规范 v count 1 v creation date sysdate 应写成 应写成 v count 1 v creation date sysdate 相对独立的程序块之间必须加空行 两个程序块在逻辑上相对独立 应用空行加以 分隔 同时增加注释 超过 80 列的语句要分行书写 长表达式应在低先级操作符处换行 操任符或关键 字放在新行之首 划分出新行应当适当地缩进 使排版整齐 语句可读 begin end 独立成行 例如 例如 以下不符合规范 begin null exception when others then null end 应写成 应写成 begin null exception when others then null end 6 注释说明注释说明 6 1 一一般般性性注注释释 注释尽可能简洁 详细而全面 创建每一数据库对象时都要加上 COMMENT ON 注释 以说明该对象的功能 和用途 建表时 对某些数据列也要加上 COMMENT ON 注释 以说明该列 和 或列取值的含义 如 XX 表中有 CZZT 列属性为 NUMBER 10 0 可加 COMMENTON 注释如下 COMMENT ON COLUMN XX CZZTIS 0 正常 1 等 待 2 超时 3 登出 在 pl sql 中 为每个变量声明添加注释 说明该变量用途 在块的每个主要部分之前增加注释 说明该段语句及算法的目的以及要得到的 结果 注释语法包含两种情况 单行注释 多行注释 单行注释 注释前有两个连字符 一般对变量 条件子句可以采用该 类注释 多行注释 符号 和 之间的内容为注释内容 对某项完整的操作建议使 用该类注释 6 2 函函数数文文本本注注释释 在每一个块和过程 存储过程 函数 包 触发器 视图等 的开头放置注释 函数名称 功能描述 输入参数 输出参数 无 返 回 值 无 创建者 创建时间 2010 04 10 修改记录 修改人员 修改时间 修改内容 CREATE ORREPLACE PROCEDURE dfsp xxx 传入参数的含义应该有所说明 如果取值范围确定 也应该一并说明 取值有特定 含义的变量 如 boolean 类型变量 应给出每个值的含义 在每一个变量声明的旁边添加注释 说明该变量要用作什么 通常 简单使用单行 注释就行了 例如 l sfhCHAR 11 身份证号码 在块的每个主要部分之前添加注释 在块的每个主要部分之前增加注释 解释下 组语句目的 最好是说明该段语句 及算法的目的以及要得到的结果 但不要对其细节进行过多的描述 在块和过程的开头注释中还可以增加要访问的数据库等信息 7 异常规范异常规范 7 1pl sql 异异常常规规范范 对于存储过程 函数等程序块都要有异常处理部分 以提高程序的自检能力 异常节格式如下 自定义异常 my err EXCEPTIONEXCEPTION 抛出自定义异常 RAISERAISE my err 异常节 EXCEPTIONEXCEPTION WHENWHEN my err THENTHEN WHENWHEN no data found THENTHEN 系统预定义异常 WHENWHEN others THENTHEN ENDEND 在异常节的最后都要设置 others 异常处理 它处理所有没有明确列出的异常 项目开发阶段 为了调试方便 快速定位错误 可以创建 xtycxx 系统异常信息 表 记录产生系统异常的存储过程或函数名 异常名 如果过程或函数中有多个程序 块 记录块的描述信息 例如 EXCEPTIONEXCEPTION WHENWHEN no data found THENTHEN INSERTINSERT INTOINTO xtycxx ccmc ycmc ms VALUESVALUES ap name no data found 获取操作文档编号 WHENWHEN others THENTHEN INSERTINSERT INTOINTO xtycxx ccmc ycmc ms VALUESVALUES ap name others 获取操作文档编号 RETURNRETURN ENDEND 7 2 后后台台验验证证异异常常信信息息规规范范 使用数据库过程 函数进行后台数据验证时 发现异常情况 需要记录异常 并返 回到用户界面 异常信息描述要求简洁 准确 完整 揭示异常实质 准确定位异常出现的位置 异常分为警告和错误两类 由于每个实际项目 业务不同 异常信息也变化很大 每个项目开始时根据需求 统一进行定义 8 附录附录 8 1 附附一一 开开发发工工具具 Oracle 开发工具使用 推荐 项目开发统一使用集成的开发环境 pl sql developer 作为开发工具 用于开发 测试 调试和优化 pl sql 存储程序单元 项目组成员使用 pl sql developer 的美化器功能 选取统一的规则文件 自动美化 多人编写的代码具有相同的书写格式 风格统一 查询语句还可最大化重用共享池中 的 sql 语句 提高应用程序性能 以下工具可以做为参考工具 1 编码工具 编码工具 ultraedit 32 全称 UltraEdit 32 Professional Text Hext Editor 公 司 IDM Computer Solutions Inc 网址 2 测试工具 测试工具 pl sql developer 全称 pl sql developer 公司 Allround Automations 网址 3 调试工具 调试工具 toad 全称 Quest Toad for Oracle 公司 Quest Software 网址 4 调试工具 调试工具 sqldeveloper 全称 sqldeveloper 公司 Oracle 网址 8 2 附附二二 预预定定义义异异常常 Oracle 预定义异常 推荐 预定义系统异常预定义系统异常产生原因产生原因 ACCESS INTO NULL 未定义对象 CASE NOT FOUND CASE 中若未包含相应的 WHEN 并且没有设置 ELSE 时 COLLECTION IS NULL 集合元素未初始化 CURSER ALREADY OPEN 游标已经打开 DUP VAL ON INDEX 唯一索引对应的列上有重复的值 INVALID CURSOR 在不合法的游标上进行操作 INVALID NUMBER 内嵌的 SQL 语句不能将字符转换为数字 NO DATA FOUND 使用 select into 未返回行 或应用索引表未初始化的元素 时 TOO MANY ROWS 执行 select into 时 结果集超过一行 ZERO DIVIDE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药品注册审评员考核试题及答案
- 电梯安全管理人员月考试题库加答案
- 2025年度委托担保合同适用范围与条件
- 2025年度智能新能源汽车出租车运营合作协议书
- 2025年出租车夜班运营权承租及紧急救援服务合作协议
- 2025年度家庭装修半包装修服务协议范本
- 2025年度企业内部培训师认证授权培训合同范本
- 2025版教育培训课程体系订购协议
- 2025年度信息技术咨询与售后服务合同
- 2025版挖掘机销售与地下管网施工承包合同
- 2025年六安市裕安区石婆店镇公开招考村级后备干部8名笔试备考试题及答案解析
- 公司领导财务知识培训课件
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- 子痫患者护理查房
- 2024仁爱科普版八年级英语上册 Unit 1 Healthy Mind and Body(知识梳理与考点训练)解析版
- 医疗护理员职业技能竞赛试题及答案
- 出货标签管理办法
- 中石化计划管理办法
- 我国军兵种介绍课件
- 2025全国农业(水产)行业职业技能大赛(水生物病害防治员)选拔赛试题库(含答案)
- 中国新生儿复苏指南解读(2021修订)
评论
0/150
提交评论