返回首页

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

更新日期:2024年09月11日

使用 UDT Manager,可以从实现 SQLData 接口的现有 Java™ 类创建 Java 不透明类型。
UDT Manager 还可以帮助您在不需要准备 Java 类的情况下,创建 Java 不透明类型,可
以指定要创建的不透明类型的特征, UDT Manager 工具创建 Java 类然后创建 Java 不透
明类型。
按照本节中的步骤使用 UDTManager 类。
从现有 Java 类创建不透明类型
从现有 Java™ 类创建不透明类型:
1.
确保类符合转换为不透明类型的要求。
有关要求,请参阅Java 类的要求。
2. 如果您不想使用服务器提供的缺省输入和输出例程,
请编写支持的 UDR 以进行输
入和输出。
有关编写支持的 UDR 的一般信息,请参阅 GBase 8s 用户定义的例程和数据类型
开发者指南 。
3. 在数据库服务器上创建一个缺省 sbspace 来保存包含不透明类型代码的 JAR 文件。

有关创建 sbspace 的信息,请参阅您的数据库服务器的《GBase 8s 管理员指南》
和 J/Foundation 开发者指南。
4. 打开一个 JDBC 连接。
确保数据库对象与连接对象相关联。没有数据库对象,驱动程序就无法创建不透明
类型。有关创建具有数据库对象的连接的详细信息,请参阅连接至数据库。

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 171 -

5. 安装 UDTManager 对象和 UDTMetaData 对象:
UDTManager udtmgr = new UDTManager(connection);
UDTMetaData mdata = new UDTMetaData();
6. 通过调用 UDTMetaData 对象中的方法设置不透明类型的属性。
至少,您必须指定 SQL 名称、UDT 长度和 JAR 文件 SQL 名称。有关 SQL 名
称的解释,请参阅 SQL 名称。
还可以指定对齐方式、隐式和显式强制转换以及任何支持的 UDR:
mdata.setSQLName("circle2");
mdata.setLength(24);
mdata.setAlignment(UDTMetaData.EIGHT_BYTE)
mdata.setJarFileSQLName("circle2_jar");
mdata.setUDR(areamethod, "area");
mdata.setSupportUDR(input, "input", UDTMetaData.INPUT)
mdata.setSupportUDR(output, "output",UDTMetaData.OUTPUT)
mdata.SetImplicitCast(com.gbasedbt.lang.IfxTypes.IFX_TYPE_
LVARCHAR, "input");
mdata.SetExplicitCast(com.gbasedbt.lang.IfxTypes.IFX_TYPE_
LVARCHAR, "output");
7. 如果需要,请指定驱动程序应将 JAR 文件放在数据库服务器文件系统中的路径名
称:
String pathname =
"/work/srv93/examples";udtmgr.setJarFileTmpPath(pathname);

请确保服务器文件系统中存在此路径。有关更多信息,请参阅指定 JAR 文件临时
路径。
8. 创建不透明类型:
udtmgr.createUDT(mdata, "Circle2.jar", "Circle2", 0);
有关从现有代码创建不透明类型的其它信息,请参阅从现有代码创建不透明类型。
有关使用上述步骤创建不透明类型的完整代码示例,请参阅使用 UDTManager 从现有的
Java 类创建不透明类型。
创建不透明类型,无需现有 Java 类
无需现有 Java™ 类创建不透明类型:
1. 在数据库服务器上创建一个缺省 sbspace 来保存包含不透明类型代码的 JAR 文件。


GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 172 -

有关创建 sbspace 的信息,请参阅您的数据库服务器的《GBase 8s 管理员指南》
和 J/Foundation 开发者指南。
2. 打开一个 JDBC 连接。
确保数据库对象与连接对象相关联。有关创建具有数据库对象的连接的详细信息,
请参阅连接至数据库。
3. 安装 UDTManager 对象和 UDTMetaData 对象:
UDTManager udtmgr = new UDTManager(connection);
UDTMetaData mdata = new UDTMetaData();
4. 通过调用 UDTMetaData 对象中的方法设置不透明类型的属性:
mdata.setSQLName("acircle");
mdata.setLength(24);
mdata.setFieldCount(3);
mdata.setFieldName(1, "x");
mdata.setFieldName(2, "y");
mdata.setFieldName(3, "radius");
mdata.setFieldType
(1,com.gbasedbt.lang.IfxTypes.IFX_TYPE_INT);
mdata.setFieldType
(2,com.gbasedbt.lang.IfxTypes.IFX_TYPE_INT);
mdata.setFieldType
(3,com.gbasedbt.lang.IfxTypes.IFX_TYPE_INT);
mdata.setJarFileSQLName("ACircleJar");
有关不透明类型的设置属性的更多信息,请参 指定不透明类型的属性。
5. 创建 Java 文件、类文件和 JAR 文件:
mdata.keepJavaFile(true);
String classname = udtmgr.createUDTClass(mdata);
String jarfilename = udtmgr.createJar(mdata, new String[] {classname
+ .class"});
有关更多信息,请参阅创建 JAR 和类文件。
6. 如果需要,请指定驱动程序应将 JAR 文件放在数据库服务器文件系统中的路径名
称:
String pathname =
"/work/srv93/examples";udtmgr.setJarFileTmpPath(pathname);
请确保此路径在服务器文件系统中存在。有关更多信息,请参阅指定 JAR 文件临
时路径。

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 173 -

7. 将类定义发送到数据库服务器:
udtmgr.createUDT(mdata, jarfilename, classname, 0);
有关更多信息,请参阅将类定义发送到数据库服务器。
有关使用上述步骤创建不透明类型的完整代码示例,
请参阅不需现有的 Java 类创建不透明
类型。

redo_bind_cpu_attr
参数说明:用于控制回放线程的绑核操作,仅sysadmin 用户可以访问。该参数属于
POSTMASTER 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:字符串,长度大于0,该参数不区分大小写。

'nobind':线程不做绑核。

'nodebind: 1, 2':利用NUMA 组1,2 中的CPU core 进行绑核。

'cpubind: 0-30':利用0-30 号CPU core 进行绑核。
默认值:'nobind'

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1210

触发器名称标识触发器,且该名称在数据库的触发器名称中必须唯一。在语句中,触发名
称跟在 CREATE TRIGGER 后面。与任何 SQL 标识一样,该名称最长为 128 个字节,
以字母开始并由字母、
数字和下划线
(_)
组成。
在以下示例中,
所示的 CREATE TRIGGER
语句部分声明了触发器的名称upqty:
CREATE TRIGGER upqty -- declare trigger name