【问题标题】:PCC-S-02201 : Pro*C does not allow [LONG VARCHAR] typePCC-S-02201:Pro*C 不允许 [LONG VARCHAR] 类型
【发布时间】:2021-03-01 15:49:05
【问题描述】:

在我的 Pro*C 程序中:

虽然 oracle 文档建议在我们希望超过 65500 字节时使用 LONG VARCHAR 而不是 VARCHAR,但 Pro*C 编译器不接受关键字 [LONG VARCHAR]。

LONG VARCHAR versements[LONG_VERS];

【问题讨论】:

    标签: c++ c oracle proc


    【解决方案1】:

    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];
    

    【讨论】:

      【解决方案2】:

      这是对我有用的答案:

      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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-13
        • 1970-01-01
        • 2012-11-27
        • 1970-01-01
        • 2015-09-26
        • 1970-01-01
        • 1970-01-01
        • 2016-05-08
        相关资源
        最近更新 更多