电力信息化系统关系数据库(开源部分) 第2部分:迁移规范_第1页
电力信息化系统关系数据库(开源部分) 第2部分:迁移规范_第2页
电力信息化系统关系数据库(开源部分) 第2部分:迁移规范_第3页
电力信息化系统关系数据库(开源部分) 第2部分:迁移规范_第4页
电力信息化系统关系数据库(开源部分) 第2部分:迁移规范_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

[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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论