【问题标题】:How to return empty string in resultset (using sys_refcursor) in ORACLE DB如何在 ORACLE DB 的结果集中返回空字符串(使用 sys_refcursor)
【发布时间】:2012-12-17 19:42:12
【问题描述】:

遇到问题后:

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

【问题讨论】:

  • 这意味着您希望返回一个完全为空的列?你可以看看 cast 是否会起作用,cast( null as varchar2(1))
  • 啊,这个演员阵容就像一个魅力!谢谢!您可以将其添加为答案吗?
  • 我很高兴!我已将其添加为答案。

标签: c++ oracle occi


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    相关资源
    最近更新 更多