版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
[CS**.***
***
CSEE
中国电机工程学会标准
T/CSEEXXXX-YYYY
电力信息化系统关系数据库(开源部分)第
2部分:迁移规范
Thesecondpartofpowerinformationsystemrelationaldatabase(opensourcepart):migration
specification
(征求意见稿)
xxxx-XX-XX发布xxxx-XX-XX实施
中国电机工程学会发布
T/CSEEXXXX-YYYY
I
T/CSEEXXXX-YYYY
目次
目次..................................................................................II
前言.................................................................................III
电力信息化系统关系数据库(开源部分)第2部分:迁移规范..................................4
1范围..................................................................................4
2规范性引用文件........................................................................4
3术语和定义............................................................................4
3.1数据类型............................................................................4
3.2普通索引............................................................................4
3.3主键索引............................................................................4
3.4触发器..............................................................................4
3.5存储过程..........................................................................4
4符号、代号和缩短语...................................................................4
5数据类型迁移对照......................................................................5
5.1Oracle数据类型....................................................................5
5.2SG-RDB-MS数据类型.................................................................5
5.3Oracle与SG-RDB-MS数据类型对照................................................6
6常用函数/存储过程写法对比............................................................7
6.1函数...............................................................................7
6.2存储过程..........................................................................8
7常见SQL写法对比...................................................................10
7.1DDL(数据定义语言).................................................................10
7.2DML(数据操作语言).................................................................7
7.3DCL(数据控制语言).................................................................11
7.4TCL(事务控制语言).................................................................12
8其它迁移要点.........................................................................12
9常见问题.............................................................................13
编制说明..........................................................................15
目次......................................................................................1
1编制背景...............................................................................2
2编制主要原则...........................................................................2
3主要工作过程...........................................................................2
4标准结构和内容说明....................................................................2
5标准水平说明............................................................................2
6标准实施措施说明........................................................................3
T/CSEEXXXX-YYYY
电力信息化系统关系数据库(开源部分)第2部分:迁移规范
1范围
本标准规定了电力信息系统SG-RDB-MS关系数据库(开源部分)的迁移规范,从SG-RDBTS
关系数据库迁移的类型、存储过程、函数、触发相等的转换要求进行规范,同时SQL调用语句的
写法及格式做了详细描述,充分支撑5G-RDB-MS数据库迁移应用。
本标准(或本部分或本指导性技术文件)适用于电力信息系统Oracle数据库向SG-RDB-MS
关系数据库迁移的规范要求。
2规范性引用文件
下列文件对于本文件的应用是必不可少的。凡是注E期的引用文件,仅注日期的版本适用
于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
《GB/T8567T988计算机软件产品开发文件编制指南》
《GB/T9385T988计算机软件需求说明编制指南》
《GB/T11457-1995软件工程术语》
《国家电网公司“十二五”信息发展规划》
《国家电网公司SG-ERP总体建设方案》
《国家电网公司系统架构设计方法论》
《国家电网公司应用软件架构设计规范》
《国家电网公司应用集成技术规范》
《国家电网公司软硬件目标架构设计规范》
《国家电网公司应用安全设计规范》
《关于印发国家电网公司2013年信息化建设实施意见的通知》
《关于印发国家电网公司2011年信息化建设实施意见的通知》(国家电网信息(2011)218
号)
《关于印发国家电网公司2012年信息化建设实施意见的通知》(国家电网信通(2012)206
号)
《国家电网公司信息系统上下线管理办法》(国家电网信息(2009)1277号)
《国家电网公司信息安全加固实施指南》
3术语和定义
3.1数据类型
是数据结构的一个值的集合以及定义在这个值集上的一组操作。
3.2普通索引
无唯一性限制的索引类型。
3.3主键索引
唯一性限制的索引类型。
3.4触发器
是数据库保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不
是由程序调用,也不是手工启动,而是由事件来触发。
3.5存储过程
是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中,经过第
一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数来执行它。
4符号、代号和缩短语
4
T/CSEEXXXX-YYYY
下列符号、代号和缩略语适用于本文件。
SQLStructuredQueryLanguage结构化查询语言
DDLDataDefinitionLanguage数据定义语言
DMLDataManipulationLanguage数据操作语言
DCLDataControlLanguage数据控制语言
5数据类型迁移对照
5.1Oracle数据类型
数据类描述
BFILE存放在数据库外的二进制数据,最大长度4G
BLOB二进制数据,最大长度4G
CHAR固定长度字符串,最大长度2000bytes
CLOB字符数据,最大长度4G
DATE日期(日-月-年),DD-MM-YY(HH-M年SS),经过严格测试,无干虫问题
DECIMAL(P,S)数字类型,P为整数位,S为小数位
FLOAT浮点数类型,NUMBER(38),双精度
INTEGER整数类型,小的整数
LONG超长字符串,最大长度2G,足够存储大部头著作
LONGRAW可变长度的二进制数据,最大长度2G
NCHAR根据字符集而定的固定长度字符串,最大长度2000bytes
NCLOB根据字符集而定的字符数据,最大长度4G
NROWID二进制数据表中记录的唯一行号,最大长度4000bytes
NUMBER(P,S)数字类型,P为整数位,S为小数位
NVARCHAR2根据字符集而定的可变长度字符串,最大长度4000bytes
RAW固定长度的二进制数据,最大长度2000byles
REAL实数类型,NUMBER(63),精度更高
ROWID数据表中记录的唯一行号,lObytes
TIMESTAMP日期(日-月一年),DD-MM-YY(HH-M年SS:FF3),经过严格测试,无千虫问题
VARCHAR2可变长度的字符串,最大长度4000byies
5.2SG-RDB-MS数据类型
数据类型描述
BIGINT(size)-9223372036854775808到9223372036854775807常规。0到18446744073709551615无
符号*。在括号中规定最大位数。
BLOB用于BLOBs(BinaryLargeOBjects)«存放最多65,535字节的数据。
CHAR(size)保存固定长度的字符串(可包含字母、数字以及特殊字符)。在拈号中指定字符庠的长度。
最多255个字符。
DATE。日期。格式:YYYY-MM-DD
注释:支持的范围是从‘1000-01-01'到'9999T2-31'
DATETIME()*日期和时间的组合。格式:YYYY-MM-DDHH:MM:SS
注粒:支持的范围是从11000-01-0100:00:00'到'9999-12-3123:59:59,
DECIMAL(size,d)作为字符目存储的DOUBLE类型,允许固定的小数点。
DOUBLE(size,d)带有浮动小数点的大数字。在括号中规定最大位数。在d参数中规定小数点右恻的最大
位数。
5
T/CSEEXXXX-YYYY
ENUM(x,y,z,etc.)允许你输入可能值的列表。可以在ENV.M列表中列出最大65535个值。如果列表中不存
在插入的值,则插入空值。
注释:这些值是按照你输入的顺序存储的。
可以按照此格式输入可能的值:ENUMCX','Y','Z')
FLOAT(size,d)带有浮动小数点的小数字。在括号中规定最大位数。在d参数中规定小数点右体J的最大
位数。
INT(size)-2147483648到2147483647常规。0到4294967295无符号*。在括号中规定最大位数。
LONGBLOB用于BLOBs(BinaryLargeOBjects)o存放最多4,294,967,295字节的数据。
LONGTEXT存放最大长度为4,294,967,295个字符的字符串。
MEDIUMB1.OB用于BLOBs(BinaryLargeOBjects),存放最多16,777,215字节的数据。
MEDIUMINT(size)-8388608到8388607普通。0to16777215无符号在括号中规定最大位数。
MEDIUMTEXT存放最大长度为16,777,215个字符的字符串。
SET与ENUM类似,SET最多只能包含64个列表项,不过SET可存储一个以上的值。
SMALLINT(size)-32768到32767常规。0到65535无符号*。在括号中规定最大位数。
TEXT存放最大长度为65,535个字符的字符串。
TIMEO时间。格式:HH:MM:SS注释:支持的范围是从'-838:59:59'到'838:59:59'
TIMESTAMP()*时间戳。TIMESTAMP值使用Unix纪元(T970-01-0100:00:00*UTC)至今的描述
来存储。格式:YYYY-MMDDHH:MM:SS
注释:支持的范围是从‘1970-01-0100:00:01'UTC到'2038-01-0903:14:07,LTC
TINYINT(size)728到127常规。。到255无符号*。在括号中规定最大位数。
TINYTEXT存放最大长度为255个字符的字符串.
VARCHAR(sizc)保存可变长曳的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大
长度。最多255个字符。
注释:如果值的长度大于255,则被转换为TEXT类型。
YEAR()2位或4位格式的年。
注释:4位格式所允许的值:1901到2155。2位格式所允许的值:70至lj69,表示从1970
到2069o
5.3Oracle与SG-RDB-MS数据类型对照
Oracle数据类型SG-RDB-MS数据类型
BLOBBLOB/LONGBLOB/MEDIUMBLOB
CHARCHAR
CLOBVARCHAR/TEXT/MEDIUMTEXT/LONC-TEXT
DATEDATE/DATETIME/TIME/T1MESTAMP
FLOATREAL
FLOAT([1-53])DECIMAL/DOUBLE
FLOAT([54-126])DOUBLEPRECISION
INTEGERBIGINT
LONGLONGBLOB
LONGRAWLONGBLOB
6
T/CSEEXXXX-YYYY
NUMBERNUMERIC
NUMBER(3,0)TINYINT
NUMBER(5,0)SMALLINT
NUMBER(7,0)MEDIUMINT
NUMBER(10,0)INT/INTEGER
NUMBER(19,0)BIGINT
RAWBIT/BLOB/TINYBLOB/LONGBLOB/MEDIUMBLOB
VARCIIAR2VARCHAR/ENUM/SET/TEXT/TTNYTEXT
6常用函数/存储过程写法对比
6.1函数
内容数据库例句标注
当前时间Oracleselectsysdatefromdual:
查询
SG-RDB-MSselectsysdate0fromdual;SG-RDB-MS需要加双括
号
K度Oiacleselectlengtli(c_a)Ciuml_test,
SG-RDB-MS
取指定长Oracleselectsubstr(c_b,1,2)fromt_tcst;
度
SG-RDB-MS
字符串转Oracleselectto_number(1123*)fromdual;
数值SG-RDB-MSselectcast('123'assignedinteger)fromdual;dual表可选
数值转字Orac1eselectlo_char(123)fromdual;
符串SG-RDB-MSselectcast(123aschar)fromdual;dual表可选
字符串转Oracleselectto_date(*2013-01-01*,'yyyy-mm-dd,)from
日期dual;
SG-RDB-MSselectstrtodateC2013-01-0T,'%YAmAd')fromdual表可选
dual;
字符串转Orac1eselectto_date(,2013-01-Of,'yyyy-nun-d(r)from
日期dual;
SG-RDB-MSselectstr_to_date(,2013-01-01*,*)fromdual表可选
dual;
条件判断Oracleselectdecode(c_a,1,1,0)fromttest:使用decode语法•较简
或者单,也支持case语法
selectcasewhenc_a=lthen1else0endfromttest;
SG-RDB-MSselectcasewhenc_a=lthen1else0endfromttest;只支持case语法
空值判断Orac1eselectnvl(c_a,0)fromttest;使用nvl
SG-RDB-MSselectifnull(c_a,0)fromt_test;使用ifnull
字符串连Orac1eselectc_a||c_bfromt_test;或者select可以使用‘1'代替
接concat(c_a,c_b)fromt_test;concat语法
SG-RDB-MSselectconcat(c_a,c_b,••,)fromttest;只支持concat语法
7
T/CSEEXXXX-YYYY
6.2存储过程
类别ORACLESG-RDB-MS类别
创建存储createorreplaceDROP1.在创建存储过程时如果存在同
过程语句procedurePADDFAC(PROCEDUREIFEXISTS名的存储过程,会删除老的存储
不同id_fac_cdIN'SD_USER_P_ADD过程.
ES_FAC_UNTT.FAC_USR';oracle使用createorreplace.
_CD%TYPE)iscreateprocedureP_ADD_FAC(SG-RDB-MS使用先删除老的存储过
id_fac_cdvarchar(100))程,然后再创建新的存储过程.
2.oracle存储过程可以定义在
package中,也可以定义在Procedures
中.如果定义在包中,一个包中可以包
含多个存储过程和方法.如果定义在
Procedures中,存储过程中不可以定
义多个存储过程.
SG-RDB-MS存储过程中不可以定义多
个存储过程.
3.oracle中字符串类型可以使用
varchar2.
SG-KDB-MS需要使用varchar
4.Oracle中参数varchar长度不是必
须的.
SG-RDB-MS中参数varchar长度是必
须的,比如varchar(100)
创建函数CREATEORDROPFUNCTIONIF1.在创建函数时如果存在同名的函
语句不同REPLACEFUNCTIONEXISTS'SD_ROLE_F_ROL数,会删除老的函数.
F_ROLE_FACS_GRP(E_FACS_GRP';CREATEoracle使用createorreplace.
ii_role_int_kcyINFUNCTIONSG-RDB-MS使用先删除老的函数,然
SD_ROLE.ROLE_IN'SD_ROLE_F_ROL后再创建新的函数.
T_KEY%TYPE)RETURNE_FACS_GRP'(ii_role_int_key2.oracle函数可以定义在package
VARCHAR2INTEGER(10)中,也可以定义在Functions中.如果
)RETURNSvarchar(1000)定义在包中,一个包中可以包含多个
存储过程和函数.如果定义在
Functions中,每个函数只能定义一个
函数.
SG-KDB-MSFunctions不可以定义多
个函数.
3.oracle返回值用return.
SG-RDB-MS返回值用returns.
8
T/CSEEXXXX-YYYY
传入参数procedureP_ADD_FAC(createprocedure1.oracle存储过程参数可以定
写法不同id_fac_cdINP_ADD_FAC((in)id_fac_cd义为表的字段类型.
ES_FAC_UNIT.FACvarchar(100))SG-RDB-MS存储过程不支持这种定义
_CD%TYPE)方法.需要定义变量的实际类型和长
度.
2.oracle参数类型in/out/inout写
在参数名后面.
SG-RDB-MS参数类型
in/out/inout写在参数名前面.
3.oracle参数类型in/out/inout都
必须写.
SG-RDB-MS参数类型如果是in,则可
以省略.如果是out或inout则不
能省略.
注意:SG-RDB-MS中指定参数为
IN,OUT,或INOUT只对PROCEDURE是合
法的。
(FUNCTION参数总是被认为是IN参
数)RETURNS字句只能对FUNCTION做
指定,对函数而言这是强制的。它用
来指定函数的返回类型,而且函数体
必须包含一个RETURNvalue语句。
functionfunc_name(createfunction
gw_idin(out)func_name(gw_idvarchar
varchar2)(100))
包的声明createorreplace拆分成多个存储过程或函数oracle可以创建包,包中可以包含多
方式package/packagebody个存储过程和方法.
packagenameSG-RDB-VS没有没有包这个柢念,可以
分别创建存储过程和方法.每个存储
过程或方法都需要放在一个文件中.
例1:方法命名
oracle中
SD_FACILITY_PKG,F_SEARCH_FACto
SG-KDB-MS
SD_FACILITY_F_SEARCH_FAC
例2:过程荒与
oracle中
SD_FACILITY_PKG.P_ADD_FAC
toSG-RDB-MS
SD_FACILITY_P_ADD_FAC
存储过程return;LEAVEproc;(proc代表最夕卜层oracle存储过程和方法都可以使用
返回语句的beginend)return退出当前过程和方法,
不一样SG-RDB-MS存储过程中只能使用leave
退出当前存储过程.不可以使用
return.
SG-RDB-MS方法可以使用return退
出当前方法.
9
T/CSEEXXXX-YYYY
存储过程EXCEPTIONWHENDECLAREEXIToracle:内部异常不需要定义,在存储
异常处理OTHERSTHENHANDLER过程或函数末尾写上EXCEPTION后,
不一样ROLLBACK;FORSQLEXCEH,ION后面的部分即为异常处理的部分.
ov_rtn_msg:=BEGINoracle可以定义自定义异常,自定义
c_sp_name|'('|ROLLBACK;异常需要使用raise关键字抛出异常
li_debug_possetov_rtn_msg后,才可以在EXCEPTION中揖获.
ID/IISG-RDB-MS:SG-RDB-MS内部异常也需
TO_CHAR(SQconcat(c_sp_name,'(',要先定义,在定义的同时也需要实现
LCODE)|I*:li_debug_pos异常的功能.
'|SUBSTR(SQLERRTOCHAR(SQ目前SG-RDB-MS不支持自定义异常.
M,1,100);LCODE),':\SUBSTR(SQLERR
M,1,100));END:
过程和函声明变量在begin声明变量在begin...end体
数的声明end体之前内,begin之后其他任何内容
变量的位之前
置.不同
NODATEXCEPTION使用FOUNDROWSOoracle中:
A_FOUNDWHENNO_DATAFOUND代替NODATAFOUND.详见注NODATAFOUND是游标的一个属性.
异常处理THEN释.当select没有查到数据就会出现no
oirtncd:=1;datafound的异常,程序不会向下执
ov_rtn_msg行.
:=SD_COMMON.P_G
ET_MSGCDP-CBM-SG-RDB-MS:
OllOOa-016',没有NO_DATA_FOUND这个属性.但可
1i_sub_rtn_cd,是使用FOUND_ROWS()方法得到
1v_sub_rtn_msgselect语句查而出来的数据.如果
);FOUND_ROWS()得到的值为0,就进入异
常处理逻辑.
在ProcedureName(参CallProcedureName(参数);SG-RDB-MS存储过程调用存储过程,
程
数);需要使用Callroname(参数).
存
Oracle调用存储过程直接写存储过
方
同程名就可以了.
7常见SQL写法对比
7.1DDL(数据定义语言)
主要包括CREATE,ALTER,DROP,TRUNCATE,COMMENT,RENAME语句。
7.1.1CREATE
10
T/CSEEXXXX-YYYY
创建表,索引比较。
7.1.1.1CREATETABLE
Createtable语句,两者在约束等条件下基本一致;其它方面略有差异。对照关系如下表:
内容数据库例句标注
基本建表Oraclecreatetablet_test(c_aint,c_b基本相同,数据类型:SG-RDB-MS
varchar(255))的INT相当于Oracle中的
NUMBER(10,0))详见后面数据类型
SG-RDB-MS
章节)
缺省值约束Oraclecreatetablet_test(c_aintdefault0,c_b
SG-RDB-MSvarchar(255
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目采购管理课件
- 劳务合同电子版
- 现代技术服务费合同4
- 绿城2024年度物业市场拓展合同
- 2024年度租赁合同标的物业的转让及过户规定2篇
- 2024版教育培训联合经营合同
- 2024年度设备维修合同标的及维修服务具体流程2篇
- 2024年度二手房买卖按揭合同范例2篇
- 基于二零二四年标准的房屋买卖中介合同
- 物理化学 第8章 各类反应的动力学
- 学校后勤管理工作课件
- 初二家长会(地理、生物会考动员)课件
- 好书伴我行主题班会
- 地下矿山管理制度汇编
- 2022年海南省自贸港政策知识竞赛考试题库(含答案)
- DWI临床应用课件
- 危重症孕产妇的救治课件
- 【碧桂园】天玺湾项目施工总承包工程施工组织设计(共305)
- 青春期-主题班会课件(共19张)
- 履约承诺书模板
- 2023安全生产责任书
评论
0/150
提交评论