sql160server向oracle迁移的解决方案内容摘要:

QUENCE 迁移 在 MS SERVER 中 ,可以将数据库中的某一字段定义为 IDENTITY 列以做主健 ,在 ORACLE 中 ,没有这样的 ID 列定义 ,但是 ORACLE 数据库有自动增长 SEQUENCE,在表上插入数据之前得到这 个 SEQUENCE 的 NEXTVAL 值;因此 SQL SERVER 的 ID 列向 ORACLE 中迁移时: 去掉建表语句中有关 ID 列的 IDENTIFY 声明关键字; 创建 SEQUENCE,将此 SEQUENCE 与需类 ID 化的列对应; 在 INSERT语句中对相应列引用其 SEQUENCE 值: ; 如,可以创建触发器来解决 ID 列的自动增长问题: CREATE OR REPLACE TRIGGER GenaerateAreaID BEFORE INSERT ON LT_AREA FOR EACH ROW Select INTO : FROM DUAL。 BEGIN END GenaerateAreaID。 需要说明的是 SEQUENCE 与 SQL SERVER 的 ID 列并不能完全相同,当向某行插入数据时,最后因为发生错误,需要 ROLLBACK时 ORACLE 的 SEQUENCE 就占用了一个 ID,而 SQL SERVER 则没有,故 ORACLE 中更多可能有跳号情况发生。 iii. 表(主健、外健、 CHECK、 UNIQUE、 DEFAULT、 INDEX) SQL SERVER 与 ORACLE 的语法大致相同 ,但是迁移时要注意以下情况 : ( 1) ORACLE 定义表字段的 default 属性要紧跟字段类型之后; ( 2) 如表有 identity 字段,要先将其记录下来,建完表之后,马上建相应的序列和表触发器,并作为记录; iv. 游标 SQL SERVER 端语法说明 :DECLARE CURSOR 语句 语法: DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSOR FOR select_statement [FOR {READ ONLY | UPDATE [OF column_list ]}] OPEN cursor_name FETCH [ [ NEXT | PRIOR | FIRST | LAST | ABSOLUTE n | RELATIVE n ] FROM cursor_name [INTO @v。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。