2012-12-17 32 views
1

面临的问题后:如何在结果集(使用SYS_REFCURSOR)在Oracle数据库返回空字符串

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++调用接口)。我目前的解决方法是返回一个字符串,包含一个空格(' '),但我不喜欢它。

+0

这意味着你想要一个完全空列返回?你可以看到,如果强制转换,'cast(null作为varchar2(1))'。 – Ben

+0

啊,这个演员就像一个魅力!谢谢!你可以添加它作为答案? –

+0

我很高兴!我已经将其添加为答案。 – Ben

回答

2

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

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

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

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

相关问题