返回首页

gbase数据、南大通用产品文档:GBase8s创建不透明类型和 UDR 概述

更新日期:2024年09月11日

在数据库服务器中,任何实现 java.sql.SQLData 接口并可以被 Java™ Virtual Machine 访问
的 Java 类都可以存储为不透明类型。UDTManager和 UDRManager 类与它们支持
的 UDTMetaData 和 UDRMetaData 类一起使用,将此功能扩展到您的客户端应用程序:您
的 Java 客户端应用程序可以使用这些类创建不透明类型和用户定义的例程,
并将它们的类
定义传送到数据库服务器。客户端不需要访问到数据库服务器来使用此功能。
重要: 此功能与服务器支持密切配合,可以创建和使用 Java 不透明类型和用户定义例程。数
据库服务器版本中存在的 Java 不透明类型和用户定义例程的任何限制同样适用于您在客户端
应用程序中创建 Java 不透明类型和例程。
当使用 UDTManager 和 UDTMetaData 类时,GBase 8s JDBC Driver 为您的应用程序执行
以下操作:
1.
获取您指定的 JAR 文件
2.
将此 JAR 文件从客户端本地区域传输到服务器本地区域
使用 UDTManager.setJarFileTmpPath() 方法定义服务器本地区域。在 UNIX™ 系统
上默认为 /tmp,在 Windows™ 系统上默认为C:\temp 。
3.
在服务器中安装此 JAR 文件
4.
使用 CREATE OPAQUE TYPE SQL 语句在数据库中注册不透明数据类型,
从 UDTMetaData 类获取输入
5.
注册支持函数并使用 CREATE 函数和 CREATE CAST SQL 语句强制转换为不
透明类型
可以使用 UDTMetaData 类中的 setSupportUDR() 和 setXXXCast() 方法定义支持的
函数。
如果您未为不透明类型提供输入和输出函数,则驱动程序注册缺省的函数(有关此
功能的任何限制,请参阅发行说明)。
6.
注册您指定的任何其他不支持的例程或强制转换(如果有的话),从应用程序中
的 UDTMetaData.setUDR() 和UDTMetaData.setXXXCast() 方法调用中获取输入
7.
在 SQL OPAQUE 类型和 Java 对象中创建映射(使用 sqlj.setUDTExtName() 方
法)
当使用 UDRManager 和 UDRMetaData 类时,GBase 8s JDBC Driver 执行以下操作:
1.
获取您指定的 JAR 文件
2.
将此 JAR 文件从客户端本地区域传输到服务器本地区域
3.
在服务器中安装此 JAR 文件
4. 使用 CREATE FUNCTION TYPE SQL 语句在数据库中注册不透明数据类型,
在您
的应用程序获取 UDRMetaData.setUDR() 方法调用的输入

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 172
-
UDT 和 UDR Manager 工具中的方法执行以下主要功能:

使用服务器提供的缺省输入和输出方法,在 Java 类不存在的情况下,在 Java 中
创建不透明类型

将客户端上现有的 Java 类转换为数据库服务器中不透明类型和 UDR

将 Java 静态方法转换为 UDR

gbase_thread_id
..............................
48


GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 103 -
使用 LVARCHAR 数据类型来创建用于存储可变长度字符串(其上限 (m) 最多可为
32,739 个字节)的列。
此限制大于 VARCHAR 数据类型,其用于长度不超过 255 个字节的字符串。
LVARCHAR 数据类型作为内置不透明数据类型实现。您可以在相同或不同 GBase 8s
实例的数据库中使用分布式查询,以访问远程表中的 LVARCHAR 列。
缺省情况下,数据库服务器将加引号的字符串解释为 LVARCHAR 类型。它还将
LVARCHAR 用于不透明数据类型的输入和输出强制转型。
LVARCHAR 数据类型以字符串(外部)格式存储不透明数据类型。每个不透明类型都
具有输入支持函数和强制转型,从而将其从 LVARCHAR 转换为数据库服务器可以处理的形
式。每个不透明类型还具有输出支持函数和强制转型,从而将不透明类型从其内部表示法
转换为 LVARCHAR。
要点: 在将 LVARCHAR 声明为数据库表中的列的数据类型(没有大小规范)时,缺
省最大大小是 2 KB(2048 个字节),但可以指定最多 32,739 个字节的显式最大长度。
当在对不透明数据类型的 I/O 操作中使用 LVARCHAR 时,最大大小仅受操作系统限制。
LVARCHAR 数据类型声明中的大小规范可受字符类型声明中的逻辑字符语义一节中描
述的 SQL_LOGICAL_CHAR 功能影响。
有关 LVARCHAR 的更多信息,请参阅 GBase 8s 用户定义的例程与数据类型开发者指
南。