写一个Oracle和XSD数据类型的对应关系
Writing a correspondence between Oracle and XSD data types
我的任务是创建从 Oracle 元数据到 XSD 格式的转换,以确保将数据从 Oracle 正确转换为 XML。
为此,我需要为 Oracle 数据类型和 XSD 数据类型提供对应关系 table。下面就是这样一个 table 的数字。表达式的右边部分是 Oracle 的 Number 数据类型格式,左边部分是要插入到 XSD 中 xs:decimal 标记的 "restriction" 元素中的标记。然后解释。
Number(null,null) <-> totalDigits=38 : 任意 38 位 with/without 小数点
Number(4,2) <-> totalDigits=4; fractionDigits=2 :
任意4位小数点从缺一位到4位中间一位;但是“1600”呢?它匹配 XSD,但不确定是否适合 Oracle 的 Number(4,2)
Number(4,0) <-> totalDigits=4;fractionDigits=0 :
4 位整数
(1) 我的理解对吗?
您能否为我提供 Oracle 和 XSD 数字数据类型之间更好的匹配?
(2) 是否有从 Oracle table 生成 XSD 的内置方法?
这个限制不是个好主意。数字类型定义为NUMBER(precision, scale),参见Table中的示例2-2 in http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements001.htm.
您必须为限制生成正则表达式模式,例如:
NUMBER(4) "-?[0-9]{1,4}"
NUMBER(4,2) "-?([0-9]{1,2})?(\.[0-9]{1,2})?"
NUMBER(4,-2) "0|-?[0-9]{1,4}0{2}"
NUMBER(2,-4) "0|-?[0-9]{1,2}0{4}"
NUMBER(2,4) "0|-?0?\.0{2}[0-9]{1,2}"
对于具有正比例的 NUMBER 类型,您可以使用 totalDigits、fractionDigits、minExclusive 和 maxExclusive 的组合。
NUMBER(4) totalDigits="4" fractionDigits="0"
NUMBER(4,2) totalDigits="4" fractionDigits="2" minExclusive="-100" maxExclusive="100"
NUMBER(2,4) totalDigits="4" fractionDigits="4" minExclusive="-.01" maxExclusive=".01"
我的任务是创建从 Oracle 元数据到 XSD 格式的转换,以确保将数据从 Oracle 正确转换为 XML。
为此,我需要为 Oracle 数据类型和 XSD 数据类型提供对应关系 table。下面就是这样一个 table 的数字。表达式的右边部分是 Oracle 的 Number 数据类型格式,左边部分是要插入到 XSD 中 xs:decimal 标记的 "restriction" 元素中的标记。然后解释。
Number(null,null) <-> totalDigits=38 : 任意 38 位 with/without 小数点
Number(4,2) <-> totalDigits=4; fractionDigits=2 : 任意4位小数点从缺一位到4位中间一位;但是“1600”呢?它匹配 XSD,但不确定是否适合 Oracle 的 Number(4,2)
Number(4,0) <-> totalDigits=4;fractionDigits=0 : 4 位整数
(1) 我的理解对吗? 您能否为我提供 Oracle 和 XSD 数字数据类型之间更好的匹配?
(2) 是否有从 Oracle table 生成 XSD 的内置方法?
这个限制不是个好主意。数字类型定义为NUMBER(precision, scale),参见Table中的示例2-2 in http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements001.htm.
您必须为限制生成正则表达式模式,例如:
NUMBER(4) "-?[0-9]{1,4}"
NUMBER(4,2) "-?([0-9]{1,2})?(\.[0-9]{1,2})?"
NUMBER(4,-2) "0|-?[0-9]{1,4}0{2}"
NUMBER(2,-4) "0|-?[0-9]{1,2}0{4}"
NUMBER(2,4) "0|-?0?\.0{2}[0-9]{1,2}"
对于具有正比例的 NUMBER 类型,您可以使用 totalDigits、fractionDigits、minExclusive 和 maxExclusive 的组合。
NUMBER(4) totalDigits="4" fractionDigits="0"
NUMBER(4,2) totalDigits="4" fractionDigits="2" minExclusive="-100" maxExclusive="100"
NUMBER(2,4) totalDigits="4" fractionDigits="4" minExclusive="-.01" maxExclusive=".01"