南大通用GBase8s 常用SQL语句(201)

在 NLSCASE INSENSITIVE 数据库中重复的行
在以 NLSCASE INSENSITIVE 选项创建的数据库中,NCHAR 或 NVARCHAR 数据类型的列和表达式在大写和小写字母之间没有差别,因此,有相同的字符序列的这些数据类型的字符串,但有字母大小写区别,取值重复。
在数据库内已加载了相同的字符串,包括 ALL、DISTINCT 或 UNIQUE 关键字的查询返回的结果可能不同于同一查询从区分大小写的数据句库返回的结果。例如,在有 NLSCASE INSENSITIVE 属性的数据库中将 NVARCHAR 字符串 “aCe”、“ACE”, 和 “AcE” 算作完全相同的,但在区分大小写的数据库中,同样的三个字符串会作为不同的值进行处理。
然而,通过使用 ALL、DISTINCT 或 UNIQUE 关键字来包括或排除重复的行,在 NLSCASE SENSITIVE 和在 NLSCASE INSENSITIVE 数据库中,CHAR、LVARCHAR 和 VARCHAR 类型的字符串都做相同的处理。要获取更多关于带有 NLSCASE INSENSITIVE 属性的数据库的信息,请参阅 指定 NLSCASE 区分大小写 和 在区分大小写的数据库中的 NCHAR 和 NVARCHAR 表达式。
分布式查询中的数据类型
其唯一数据源是会话连接到的本地数据库中的表和视图的那些查询,可从注册在本地数据库中的任何内建的或用户定义的数据类型的列或表达式返回值。引用其他数据库中的表或视图的查询称为分布式查询,其它们可访问的数据类型是 GBase 8s 在本地查询中支持的数据类型的子集。
在分布式查询之中,对数据类型的限制依赖于参与的数据库服务器的数目。
如果查询访问的所有数据库都是同一 GBase 8s 实例的数据库,则该查询称为跨数据库分布式查询。
如果该查询访问多个 GBase 8s 实例的数据库,则该查询称为跨服务器分布式查询。
在这两类分布式查询中,所有参与的数据库都必须有相同的符合 ANSI/ISO 的状态。如果所有参与的服务器都支持 SKIP 选项,则跨服务器分布式查询可使用 SKIP 和 FIRST 选项;否则该查询失败并报错。大多数情况下,所有跨服务器操作需要参与的数据库服务器实例都支持指定该操作的 SQL 语法。
要获取关于分布式查询的附加信息,请参阅 GBase 8s 数据库设计和实现指南。
跨数据库事务中的数据类型
仅访问本地 GBase 8s 实例的数据库的分布式查询(以及其他分布式 DML 操作或函数调用)可访问下列类别的数据类型:
非 opaque 的内建的数据类型,包括这些:
oBIGINT
oBIGSERIAL
oBYTE
oCHAR
oDATE
oDATETIME
oDECIMAL
oFLOAT
oINT
oINTERVAL
oINT8
oMONEY
oNCHAR
oNVARCHAR
oSERIAL
oSERIAL8
oSMALLFLOAT
oSMALLINT
oTEXT
oVARCHAR
大多数内建的 opaque 数据类型,包括这些:
oBLOB
oBOOLEAN
oCLIENTBINVAL
oCLOB
oIFX_LO_SPEC
oIFX_LO_STAT
oINDEXKEYARRAY
oLVARCHAR
oPOINTER
oRTNPARAMTYPES,
oSELFUNCARGS
oSTAT
oXID
显示地强制转型为上列任何内建的类型的用户定义的类型(UDT)
在前面的列表中任何内建类型的 DISTINCT。
仅当所有 UDT 和 DISTINCT 类型都显式地强制转型为内建的数据类型,本地 GBase 8s 实例的跨数据库分布式操作才可基于内建的数据类型返回 UDT 和 DISTINCT 类型。
在参与该分布式查询中的每一数据库中,所有 opaque UDT、DISTINCT 类型、数据类型层级和强制转型都必须有完全相同的定义。对于使用上列数据类型作为参数或作为返回的数据类型的跨服务器 UDR 中的查询或其他 DML 操作,该 UDR 还必须在每一参与的数据库中有相同的定义。
如果跨数据库的分布式查询(或任何其他跨数据库 DML 操作)引用在另一包括任何下列数据类型的列的 GBase 8s 实例的另一数据库中的表、视图或同义词,则该分布式查询失败并报错:
LOLIST
IMPEX
IMPEXBIN
SENDRECV
上列的任何 opaque 数据类型的 DISTINCT。
复合的类型(命名的或未命名的 ROW、COLLECTION、LIST、MULTISET 或 SET)
跨服务器事务中的数据类型
跨两个或多个 GBase 8s 实例的服务器的分布式查询(或任何其他的分布式 DML 操作或函数调用)不可返回复合的或大对象数据类型,也不可返回大多数用户定义的数据类型(UDT)或 opaque 数据类型。跨服务器分布式查询、DML 操作和函数调用仅可返回下列数据类型:
任何非 opaque 的内建的数据类型
BOOLEAN
LVARCHAR
非 opaque 的内建的类型的 DISTINCT
BOOLEAN 的 DISTINCT
LVARCHAR 的 DISTINCT
在此列表中任何出现在上面的 DISTINCT 类型的 DISTINCT。
跨服务器的分布式查询仅可支持 DISTINCT 数据类型,如果显式地将它们强制转型为内建的类型,且在参与该分布式查询的每一数据库中,则用完全相同的方式定义所有 DISTINCT 类型、它们的数据类型层级和它们的强制转型。对于那些使用前面罗列的数据类型作为参数或作为返回的数据类型的查询或其他跨服务器的 UDR 中的 DML 操作,该 UDR 必须在每个参与的数据库中有相同的定义。
存储安全标签对象的内建的 DISTINCT 数据类型 IDSSECURITYLABEL,可由持有足够的安全凭证的用户跨服务器地和跨数据库操作地对受保护的数据进行访问。就像对受保护的数据进行本地操作一样,在数据库服务器已经将保护数据安全的数据的安全标签与发出该查询的用户的安全凭证进行比较之后,访问由安全策略保护的远程表的那些分布式查询可仅返回 IDSLBACRULES 允许的符合条件的行。
要获取更过关于在跨数据库 DML 操作中 GBase 8s 支持的数据类型的附加信息,请参阅 分布式查询中的数据类型。要获取关于在跨服务器操作中有效的 DISTINCT 数据类型的表层级的信息,请参阅 分布式操作中的 DISTINCT 类型。
如果跨服务器查询(或任何其他跨服务器 DML 操作)引用包括任何下列数据类型的列的另一 GBase 8s 实例的数据库中的表、视图或同义词,则查询失败并报错。:
BLOB
CLOB
INDEXKEYARRAY
POINTER
RTNPARAMTYPES
SELFUNCARGS
IFX_LO_SPEC
IFX_LO_STAT
STAT
CLIENTBINVAL
用户定义的 OPAQUE 类型
复合的类型(命名的或未命名的 ROW、COLLECTION、LIST、MULTISET 或 SET)
任何以上罗列的 opaque 或复合的数据类型的 DISTINCT。
跨服务器查询不可访问另一 GBase 8s 实例的数据库,除非两个服务器都在它们的 DBSERVERNAME 或 DSERVERALIASES 配置参数中和在 sqlhosts 信息中定义 TCP/IP 或 IPCSTR 连接。对两个参与的服务器都要支持相同的连接类型(TCP/IP 抑或 IPCSTR)的要求也适用于 GBase 8s 实例之间的任何通信,即使二者位于同一台计算机上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值