【发布时间】:2021-03-01 15:49:05
【问题描述】:
在我的 Pro*C 程序中:
虽然 oracle 文档建议在我们希望超过 65500 字节时使用 LONG VARCHAR 而不是 VARCHAR,但 Pro*C 编译器不接受关键字 [LONG VARCHAR]。
LONG VARCHAR versements[LONG_VERS];
【问题讨论】:
在我的 Pro*C 程序中:
虽然 oracle 文档建议在我们希望超过 65500 字节时使用 LONG VARCHAR 而不是 VARCHAR,但 Pro*C 编译器不接受关键字 [LONG VARCHAR]。
LONG VARCHAR versements[LONG_VERS];
【问题讨论】:
LONG VARCHAR 是外部数据类型。见Table 3-4 here
更多detail here 中讨论了如何使用外部数据类型。以下是摘录:
Oracle 识别两种数据类型:内部和外部。 内部数据类型指定 Oracle 如何在数据库中存储列值 表。外部数据类型指定用于存储值的格式 输入和输出主机变量。在预编译时,默认的 Oracle 将外部数据类型分配给每个主变量。数据类型 等价允许您覆盖此默认等价和 让您控制 Oracle 解释输入数据和格式的方式 输出数据。
可以在逐个变量的基础上使用 VAR 语句。语法是:
EXEC SQL VAR <host_var> IS <type_name> [ (<length>) ];...您还可以将用户定义的数据类型等同于 Oracle 外部 使用 TYPE 语句的数据类型。语法是:
EXEC SQL TYPE <user_type> IS <type_name> [ (<length>) ] [REFERENCE];
【讨论】:
这是对我有用的答案:
typedef struct
{
long len;
char arr[1036810];
} long_varchar;
long_varchar versements;
EXEC SQL BEGIN DECLARE SECTION;
EXEC SQL type long_varchar is LONG VARCHAR (1036810);
EXEC SQL END DECLARE SECTION;
【讨论】: