【问题标题】:Not able to get the correct column names of CLOB type columns despite using DBMS_LOB.substr(myColumn, 3000)尽管使用 DBMS_LOB.substr(myColumn, 3000),但无法获得 CLOB 类型列的正确列名
【发布时间】:2016-08-11 06:32:50
【问题描述】:

我正在使用 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production 。我在一个表中有两列声明为CLOB,我想使用SYS_REFCURSOR 从表中读取数据。但是我从除声明为CLOB 的列之外的所有列中获取了正确的数据和列名。以下是我的存储过程:

create or replace
procedure ZSPPQCSGAPHISTORY
(
    P_MEMBERID in types.char20,
    P_CAREGAPCODE   in types.char90, cur in out SYS_REFCURSOR
)

authid current_user
as
begin
open cur for select
            A.MEMBERID,
      A.CAREGAPCODE,
      A.RATINGPERIOD,
            A.DISCUSSEDDATETIME, 
            A.DISCUSSEDUSERID, 
            A.COMPLETEDDATE, 
            DBMS_LOB.substr(A.CALLSCRIPT, 3000),
            DBMS_LOB.substr(A.NOTES, 3000)
            from PQCSCGAP A 
            where A.MEMBERID=P_MEMBERID
            and A.CAREGAPCODE=P_CAREGAPCODE order by DISCUSSEDDATETIME desc;

end;

我正在使用DBMS_LOB.substr(myColumn, 3000) 读取数据,但我仍然没有从声明为CLOB 类型的列中获取正确的列名。有关如何解决此问题的任何想法?

【问题讨论】:

  • 能不能只执行select语句,看看有没有返回数据。
  • 其实它可以获取数据,但是使用不同的列名,例如 DBMS_LOB.substr(A.NOTES, 3000)。我想要原始的列名。如果让您感到困惑,我很抱歉。
  • 您应该在 select 语句中提供别名,例如: DBMS_LOB.substr(A.CALLSCRIPT, 3000) as CALLSCRIPT,
  • 太完美了..!! +1 解决方案。

标签: oracle plsql oracle11g


【解决方案1】:

您应该在 select 语句中提供别名,例如:DBMS_LOB.substr(A.CALLSCRIPT, 3000) as CALLSCRIPT, – Motor

我没有为CLOB类型的列使用Alias名称是我的错误。所以,以下修改后的存储过程有效:

create or replace
procedure ZSPPQCSGAPHISTORY
(
    P_MEMBERID in types.char20,
    P_CAREGAPCODE   in types.char90, cur in out SYS_REFCURSOR
)

authid current_user
as
begin
open cur for select
            A.MEMBERID,
      A.CAREGAPCODE,
      A.RATINGPERIOD,
            A.DISCUSSEDDATETIME, 
            A.DISCUSSEDUSERID, 
            A.COMPLETEDDATE, 
          DBMS_LOB.substr(A.CALLSCRIPT, 3000) AS CALLSCRIPT,
      DBMS_LOB.substr(A.NOTES, 3000) AS NOTES
            from PQCSCGAP A 
            where A.MEMBERID=P_MEMBERID
            and A.CAREGAPCODE=P_CAREGAPCODE order by DISCUSSEDDATETIME desc;

end;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 2018-09-05
    • 2021-09-19
    相关资源
    最近更新 更多