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



遇到问题后:

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

我研究了一下,发现了以下两个问题:为什么Oracle9i将空字符串视为NULL?Oracle没有区分null和空字符串。


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


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

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

execute由于上述错误而失败。

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

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


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

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

例如,下面将生成一个完全为null的列。

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

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

最新更新