【发布时间】: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 解决方案。