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

标签 c++ oracle occi

遇到问题后:

ORA-32108: max column or parameter size not specified

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


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


我目前拥有的是:

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

由于上述错误,执行 失败。

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

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


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

最佳答案

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

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

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

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

关于c++ - 如何在 ORACLE DB 的结果集中返回空字符串(使用 sys_refcursor),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13912719/

相关文章:

c++ - 如何在 OCCI setDataBuffer 中使用 vector<string>?

c++ - VS2012 Oracle unique_ptr 崩溃的返回 vector

Oracle PL\SQL Null 输入参数 WHERE 条件

c++ - 裁剪具有定义的宽度、长度和像素位置的视频文件

c++ - 使用 DEFINE_string 是什么意思

c++ - 模板代码中的转发引用与 const 左值引用

database - 将出勤率存储在数据库中

.net - Oracle 和 SQL Server 中的长查询

linux - 如何在Linux上使用OCCI连接到oracle db?

c++ - 不要用 system() 打开控制台输出