1

遇到问题后:

ORA-32108: 未指定最大列或参数大小

我研究了一下,发现了这两个问题:为什么 Oracle 9i 将空字符串视为 NULL?Oracle 不区分空字符串和空字符串?.


这些问题解释了我得到的错误。但这让我想到了下一个问题——如何在 Oracle 的 ResultSet 中将空字符串作为字段值返回?


到目前为止,我所拥有的是:

  • 创建语句
  • 将输出参数注册为oracle::occi::OCCICURSOR
  • execute该声明
  • 我调用GetCursor使用返回的结果集

由于execute上述错误,失败。

那么,如何在结果集中返回这样的字段,其值为空字符串('')?

换句话说,我不知道如何应用此处指定的操作-它是服务器端的吗?或者我应该在我的代码中添加一些东西?或者在存储过程中,返回这个结果集?


我使用 OCCI(Oracle C++ 调用接口)。我当前的解决方法是返回一个包含单个空格 ( ' ') 的字符串,但我不喜欢它。

4

1 回答 1

2

如果您想返回一个完全为 NULL 的列,您可以使用CAST(),它将一种数据类型转换为另一种数据类型。

例如,以下将生成一个完全为空的列。

select a.*, cast(null as varchar2(1)) as null_column
  from my_table a

但是,数据库现在知道这应该是 VARCHAR2(1) 的列,而如果您使用null as null_column,则没有指定最大长度。

于 2012-12-17T11:42:12.437 回答