返回首页

gbase数据、南大通用产品文档:GBase8a13:51:

更新日期:2024年09月11日

BackUp table vcname000001.test.t2 end
===================ParallelProcessTable
End============================
========================SaveBackUpInfo=======================

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
397
==========
注:如果不加参数-R,则默认并行度为4。

尽管您最可能使用 GBase 8s 扩展类在不透明类型上下文之外的数据库服务器上创建大对
象,但是智能大对象仍可以是不透明类型中的数据成员,
有关智能大对象的更多信息,请参阅智能大对象数据类型。
在不透明类型中大对象存储在 IfxLocator 对象中;
在内部定义不透明类型的 C 结构中,

对象通过 MI_LO_HANDLE 类型的定位指针引用。该对象使用 IfxSmartBlob 类提供的方
法创建,并且从这些方法获得的大对象句柄成为不透明类型中的数据成员。BLOB 和
CLOB 对象都使用相同的大对象句柄,如下例所示:
import java.sql.*;
import com.gbasedbt.jdbc.*;
/*
* C struct of large_bin_udt:
*
* typedef struct LARGE_BIN_TYPE
* {
* MI_LO_HANDLE lb_handle; // handle to large object (72 bytes)
* }
* large_bin_udt;
*
*/
public class largebinUDT implements SQLData
{
private String sql_type = "large_bin_udt";
public Clob lb_handle;

public largebinUDT() { }

public largebinUDT(Clob clob)
{
lb_handle = clob;
}

public String getSQLTypeName()
{

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 195
-
return sql_type;
}
// reads a stream of data values and builds a Java object
public void readSQL(SQLInput stream, String type) throws SQLException
{
sql_type = type;
lb_handle = stream.readClob();
}
// writes a sequence of values from a Java object to a stream
public void writeSQL(SQLOutput stream) throws SQLException
{
stream.writeClob(lb_handle);
}
}
在 JDBC 应用程序中,使用 IfxSmartBlob 类提供的方法创建 MI_LO_HANDLE 对象:
String s = "insert into largebin_tab (int_col, largebin_col, lvc_col) " +
"values (?,?,?)";
System.out.println(s);
pstmt = conn.prepareStatement(s);

...
// create a large object using IfxSmartBlob's methods
String filename = "lbin_in1.dat";
File file = new File(filename);
int fileLength = (int) file.length();
FileInputStream fin = new FileInputStream(file);

IfxLobDescriptor loDesc = new IfxLobDescriptor(conn);
System.out.println("create large object descriptor...ok");

IfxLocator loPtr = new IfxLocator();
IfxSmartBlob smb = new IfxSmartBlob((IfxConnection)conn);
int loFd = smb.IfxLoCreate(loDesc, 8, loPtr);
System.out.println("create large object...ok");

int n = smb.IfxLoWrite(loFd, fin, fileLength);

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 196
-
System.out.println("write file content into large object...ok");

pstmt.setInt(1, 1);
System.out.println("setInt...ok");

// initialize largebin object using the large object created
// above, before doing setObject for the large_bin_udt column.
largebinUDT largebinObj = new largebinUDT();
largebinObj.lb_handle = new IfxCblob(loPtr);
pstmt.setObject(2, largebinObj);
System.out.println("setObject(largebinUDT)...ok");

pstmt.setString(3, "Sydney");
System.out.println("setString...ok");

pstmt.executeUpdate();
System.out.println("execute...ok");

// close/release large object
smb.IfxLoClose(loFd);
System.out.println("close large object...ok");
smb.IfxLoRelease(loPtr);
System.out.println("release large object...ok");
有关详细信息,请参阅智能大对象数据类型。

GBase 8a MPP Cluster 支持用户变量。
用户变量的生命周期是会话级的,
对其它会
话不可见。当用户退出时,此用户的所有用户变量会自动释放。
用户变量的书写规则是:@var_name。
通过SET 语法来定义并为变量赋值:
SET @var_name = expr [, @var_name = expr] ...
“=”是赋值操作符。赋给每一个变量的expr 值可以是实数、字符串或NULL。
通过SELECT 语法查看用户变量的值:
SELECT @var_name [, @var_name] ...
示例
示例1:使用SET 语句为变量赋值。
gbase> SET @t1='abc',@t2=null,@t3=4;
Query OK, 0 rows affected
gbase> SELECT @t1,@t2,@t3;
+------+------+------+
| @t1
| @t2
| @t3
|
+------+------+------+
| abc
| NULL |
4 |
+------+------+------+
1 row in set
用户变量可以用于表达式所允许的任何地方。如果用户使用的变量没有初始化,
那么它的值就为NULL。
注意

常量的上下文中不能使用变量,
例如,
在SELECT 的LIMIT 子句中。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
625