C++ 如何在ORACLE DB的resultset中返回空字符串(使用sys_refcursor)

C++ 如何在ORACLE DB的resultset中返回空字符串(使用sys_refcursor),c++,oracle,occi,C++,Oracle,Occi,面对问题后: ORA-32108:未指定最大列或参数大小 我研究了一下,发现了两个问题:和 这些问题解释了我所犯的错误。但这就引出了下一个问题——如何在Oracle的ResultSet中返回空字符串作为字段值 到目前为止,我得到的是: 创建语句 将输出参数注册为oracle::occi::OCCICURSOR 执行语句 我调用GetCursor来使用返回的结果集 由于上述错误,执行失败 那么,如何在resultset中返回这样的字段,它的值为空字符串(') 换句话说,我不知道如何应用指定

面对问题后:

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

我研究了一下,发现了两个问题:和


这些问题解释了我所犯的错误。但这就引出了下一个问题——如何在Oracle的ResultSet中返回空字符串作为字段值


到目前为止,我得到的是:

  • 创建语句
  • 将输出参数注册为oracle::occi::OCCICURSOR
  • 执行
    语句
  • 我调用
    GetCursor
    来使用返回的结果集
由于上述错误,
执行
失败

那么,如何在resultset中返回这样的字段,它的值为空字符串(
'

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



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

'
),但我不喜欢它。

如果希望返回一个完全为空的列,可以使用它将一种数据类型转换为另一种数据类型

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

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

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

这意味着您希望返回一个完全为null的列?你可以看看这个cast是否有效,
cast(null为varchar2(1))
。啊,这个cast就像一个符咒!谢谢你能补充一下吗?我很高兴!我把它作为一个答案加上去了。