互联网服务 Oracle移植sql anywhere

在将Oracle移植到SQL Anywhere的时候需要注意哪些问题?

对于绝大部分,Oracle到SQL Anywhere的移植还是很容易的。 首先需要注意的就是数据类型。可以使用SQL Anywhere的“移植数据库(Migrate Database)”向导来从Oracle中创建SQL Anywhere的数据库,但最好还是逐个检查每一列的数据类型以保证能满足要求。向导中的一些选项值得我... 显示全部
对于绝大部分,Oracle到SQL Anywhere的移植还是很容易的。
首先需要注意的就是数据类型。可以使用SQL Anywhere的“移植数据库(Migrate Database)”向导来从Oracle中创建SQL Anywhere的数据库,但最好还是逐个检查每一列的数据类型以保证能满足要求。向导中的一些选项值得我们注意:

32位BINARY_FLOAT的Oracle列将被移植成为SQL Anywhere中的64位DOUBLE数据类型,有可能你是希望移植成32位的REAL数据类型。
DATE列将被移植为TIMESTAMP,但有可能你希望还是保持DATE。
NUMBER列被移植为64位的浮点DOUBLE数据类型,有可能如果你只用该列来保存整数或定点小数的值的话,可以考虑INTEGER、BIGINT或NUMERIC可能更加合适。
NUMBER(precision)列将被移植为NUMERIC(precision),但有可能你可以考虑使用INTEGER或BIGINT一类的整数数据类型。
另一个主要的问题就是要将Oracle的PL/SQL移植到SQL Anywhere使用的WATCOM SQL或者T-SQL上。WATCOM SQL编码和调试要容易一些,你不必处理Oracle的诸如“mutating tables”的限制(ORA-04091错误)。

以下是一些Oracle和SQL Anywhere的不同地方:

REMAINDER变成MODDECLARE在BEGIN后TO_NUMBER(USERENV(‘SESSION_ID’))变成@@spidIN OUT变成INOUTRAISE_APPLICATION_ERROR变成RAISERROR变量:=表达式;变成SET 变量 = 表达式;ELSIF变成ELSEIFSYSDATE变成CURRENT TIMESTAMPTO_CHAR变成STRING(…)FROM DUAL变成FROM dummy(或者干脆不要FROM子句)WHERE (+)操作符需要换成OUTER JOIN子句DECODE变成CASE或IF表达式SQL%ROWCOUNT变成@@ROWCOUNTCREATE SEQUENCE变成DEFAULT AUTOINCREMENT或GLOBAL AUTOINCREMENTROUND需要2个参数GREATEST变成GREATER,并且只接受2个参数日期计算不返回部分时间组件
也同时需要注意Oracle的空字符串的含义为“是一个NULL值”,而SQL Anywhere中被看成是一个没有长度的字符串。 收起
参与2

查看其它 1 个回答lwb_aix 的回答

lwb_aix lwb_aix 系统工程师 重庆南华中天技术有限公司
:victory: :hug:
系统集成 · 2009-06-27
浏览1715

回答者

lwb_aix
lwb_aix 0 3 4
系统工程师 重庆南华中天技术有限公司
擅长领域: 服务器小型机存储
评论2054

lwb_aix 最近回答过的问题

回答状态

  • 发布时间:2009-06-27
  • 关注会员:0 人
  • 回答浏览:1715
  • X社区推广