Table 7-2 数据库功能
1 DB2 原本就支持以 Java 编写的储存过程或函数。 要使用本机 SQL 过程语言编写过程,请在数据库服务器上安装 C 编译器。
2 Informix 身份列关键字为 SERIAL8。
3 Informix 储存过程无法返回值。
4 MySQL 身份列关键字为 AUTO_INCREMENT。
5 可以使用 Postgres 顺序对象为主键列提供默认值,从而有效地模拟身份列。
Postgres 有一个称为《规则》的本机构造。 可以使用该构造有效地模拟触发器和 Instead of 触发器。 该构造还支持使用以各种过程编程语言编写的触发器或 Instead of 触发器。
下表列出了用于按数据库检索当前日期和时间的 SQL 语句:
Table 7-3 时戳语句
下表列出了用于调用储存过程或函数的 SQL 语法。 该语法可用于格式化嵌入式 SQL 语句中的过程和函数调用。
Table 7-4 调用储存过程或函数
1 Oracle 的 JDBC 实现不支持将函数作为一个字符串来调用。
下表按数据库列出外部连接运算符。
Table 7-5 外部连接运算符
|
数据库 |
Left Outer Join 运算符 |
ANSI 兼容 |
|---|---|---|
|
IBM DB2 UDB |
LEFT OUTER JOIN |
是 |
|
Informix IDS |
LEFT OUTER JOIN |
是 |
|
MSSQL |
*= |
否 |
|
MySQL |
LEFT OUTER JOIN |
是 |
|
Oracle |
(+) |
否 |
|
PostgreSQL |
LEFT OUTER JOIN |
是 |
|
Sybase ASE |
*= |
否 |
NOTE:从版本 10g 开始,Oracle 支持与 ANSI 兼容的 LEFT OUTER JOIN 运算符。
Table 7-7 支持的事务隔离级别
|
数据库 |
无 |
未提交的读 |
提交的读 |
可重复读 |
可序列化 |
URL |
|---|---|---|---|---|---|---|
|
IBM DB2 UDB |
0 |
X |
X1 |
X |
X |
|
|
MySQL(InnoDB 表类型) |
0 |
X |
X |
X1 |
X |
|
|
Oracle |
0 |
0 |
x、1. |
0 |
X |
|
|
PostgreSQL |
0 |
02 |
X1 |
02 |
X |
1 这是该数据库的默认隔离级别。 2 可对其进行设置,但是它将化名为支持的隔离级别。
下表确定支持的数据库的提交关键字:
Table 7-8 提交关键字
|
数据库 |
提交关键字 |
|---|---|
|
IBM DB2 UDB |
COMMIT |
|
Informix IDS |
COMMIT WORK1 |
|
MSSQL |
GO |
|
MySQL |
COMMIT |
|
Oracle |
COMMIT |
|
PostgreSQL |
COMMIT |
|
Sybase ASE |
GO |
1 用于日志记录数据库和 ANSI 兼容的数据库。 非日志记录数据库不支持事务。
下表列出了该数据库的属性。
Table 7-9 IBM DB2 UDB 的属性
下表列出 Driver for JDBC 在运行时隐式设置的数据库兼容性参数。 不要显式覆盖这些设置。
Table 7-10 动态配置的 IBM DB2 通用数据库设置
|
显示名称 |
标签名称 |
值 |
|---|---|---|
|
当前时戳语句: |
current-timestamp-stmt |
SELECT (CURRENT TIMESTAMP) FROM SYSIBM.SYSDUMMY1 FETCH FIRST 1 ROW ONLY |
|
时戳转换程序类: |
time-translator-class |
com.novell.nds.dirxml.driver.jdbc.db.DB2Timestamp |
下表列出了该数据库的属性。
Table 7-11 Informix 动态服务器的设置
1 用于日志记录数据库和 ANSI 兼容的数据库。 非日志记录数据库不支持事务。
下表列出 Driver for JDBC 在运行时隐式设置的数据库兼容性参数。 不要显式重写这些设置。
Table 7-12 动态配置的 Informix 动态服务器设置
|
显示名称 |
标签名称 |
值 |
|---|---|---|
|
当前时戳语句: |
current-timestamp-stmt |
SELECT FIRST 1 (CURRENT YEAR TO FRACTION(5)) FROM INFORMIX.SYSTABLES |
下表列出了该数据库的属性:
Table 7-13 Microsoft SQL Server 的设置
|
属性 |
值 |
|---|---|
|
当前时戳语句 |
SELECT (CURRENT_TIMESTAMP) |
|
储存过程/函数调用语法 |
EXECUTE schema-name.procedure-name(parameter-list) |
|
是否区分大小写? |
否 |
|
提交关键字 |
GO |
|
Left Outer Join Operator |
*= |
下表列出 Driver for JDBC 在运行时隐式设置的数据库兼容性参数。 不要显式重写这些设置。
下表列出了该数据库的属性。
Table 7-15 MySQL 的设置
|
属性 |
值 |
|---|---|
|
当前时戳语句 |
SELECT (CURRENT_TIMESTAMP) |
|
储存过程/函数调用语法 |
(NA) |
|
是否区分大小写? |
是 |
|
提交关键字 |
COMMIT |
|
Left Outer Join Operator |
LEFT OUTER JOIN |
下表列出在运行时为该数据库动态配置的数据库兼容性参数。
下表列出了该数据库的属性:
Table 7-17 Oracle 设置
|
属性 |
值 |
|---|---|
|
当前时戳语句 |
SELECT (SYSDATE) FROM SYS.DUAL |
|
储存过程/函数调用语法 |
CALL schema-name.procedure-name(parameter-list) |
|
是否区分大小写? |
否 |
|
提交关键字 |
COMMIT |
|
Left Outer Join Operator |
(+) |
下表列出 Driver for JDBC 在运行时隐式设置的数据库兼容性参数。 不要显式重写这些设置。
Table 7-18 动态配置的 Oracle 设置
NOTE:默认的排除过滤器用于从同步纲要中省略 Oracle 10g 中可见的已丢弃表。
下表列出了该数据库的属性:
Table 7-19 PostgreSQL 的设置
|
属性 |
值 |
|---|---|
|
当前时戳语句 |
SELECT (CURRENT_TIMESTAMP) |
|
储存过程/函数调用语法 |
SELECT schema-name.procedure-name(parameter-list) |
|
是否区分大小写? |
否 |
|
提交关键字 |
COMMIT |
|
Left Outer Join Operator |
LEFT OUTER JOIN |
下表列出了该数据库的属性:
Table 7-20 Sybase ASE 的设置
|
属性 |
值 |
|---|---|
|
当前时戳语句 |
SELECT GETDATE() |
|
储存过程/函数调用语法 |
EXECUTE schema-name.procedure-name(parameter-list) |
|
是否区分大小写? |
是 |
|
提交关键字 |
GO |
|
Left Outer Join Operator |
*= |
下表列出 Driver for JDBC 在运行时隐式设置的数据库兼容性参数。 不要显式重写这些设置。
Table 7-21 动态配置的 Sybase ASE 设置
要确保对二进制值发生 ANSI 兼容的填充和截断行为,请确保二进制列类型(不是 IMAGE)符合以下准则:
如果这些类型带有限制 NULL,则对于 eDirectory 来说很重要的尾随零将被截断。 如果二进制列的大小超出各自的 eDirectory 特性的大小,则对值追加额外的 0。
建议的解决方案是同步二进制值时只使用 IMAGE 数据类型。