如何在ORACLE DB中返回结果集中的空字符串(使用sys_refcursor)

时间:2012-12-17 10:52:14

标签: c++ oracle occi

面对问题后:

  

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

我研究了一下,我发现了这两个问题:Why does Oracle 9i treat an empty string as NULL?Oracle not distinguishing between nulls and empty strings?


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


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

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

由于上述错误,execute失败了。

那么,我怎样才能在结果集中返回这样的字段,该字段的值为空字符串('')?

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


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

1 个答案:

答案 0 :(得分:2)

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

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

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

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