为什么我的CLOB值为此视图返回null?

时间:2015-08-13 16:04:49

标签: sql database oracle oracle11g

我有以下查询,基于另一个关键查询,关键查询为我们获取数据,然后自动视图处理代码执行各种操作以制定它可以执行的查询。这样所有视图都以相同的方式处理。 IOW,这个第一段摘录是当我告诉它执行真正的查询时发送给服务器的内容,这对于这里来说太大了,无论如何都运行得很好。

WITH
  data AS (
    SELECT
      list_attributeSheets.name,
      list_attributeSheets.attributeValue,
      list_attributeSheets.ciid,
      ROW_NUMBER() OVER(ORDER BY list_attributeSheets.name ASC) AS rowNumber,
      5 AS queryUserId
    FROM
      list_attributeSheets
    WHERE
      list_attributeSheets.ciid = 14
  )
SELECT
  data.*,
  (SELECT COUNT(*) FROM data) AS totalRowCount
FROM
  data
WHERE
  data.rowNumber BETWEEN 1 AND 25
ORDER BY
  data.name ASC

问题是list_attributeSheets.attributeValue的所有值都返回为null。如果我运行直接查询,例如select attributeValue from list_attributeSheets,则所有数值都会正确返回。

我说数字,但实际上这些列首先全部转换为CLOB,因为数字与CIAttributeValue.textValue匹配。有四个独占值列,我将它们合并为任何一个非空值。我无法让Oracles的coalesce合作,所以我只是选择了一位老人CASE

CASE
    WHEN (CIAttributeValue.textValue IS NOT NULL AND DBMS_LOB.getlength(CIAttributeValue.textValue)>0) THEN TO_CLOB(CIAttributeValue.textValue)
    WHEN (CIAttributeValue.booleanValue IS NOT NULL) THEN TO_CLOB(CIAttributeValue.booleanValue)
    WHEN (CIAttributeValue.numberValue IS NOT NULL) THEN TO_CLOB(CIAttributeValue.numberValue)
    WHEN (CIAttributeValue.dateValue IS NOT NULL) THEN TO_CLOB(CIAttributeValue.dateValue)
END AS AttributeValue

Oracle为表生成了这样的DDL reems,我已经提取了基本的部分:

CREATE TABLE CIATTRIBUTEVALUE 
(
  CIATTRVALUEID NUMBER(10, 0) NOT NULL 
, CIID NUMBER(10, 0) NOT NULL 
, CIATTRTYPEID NUMBER(10, 0) NOT NULL 
, TEXTVALUE NCLOB 
, BOOLEANVALUE NUMBER(3, 0) 
, NUMBERVALUE NUMBER 
, DATEVALUE DATE 
, ISLOGICALLYDELETED NUMBER(3, 0) DEFAULT 0 NOT NULL 
, ISRECYCLED NUMBER(3, 0) DEFAULT 0 NOT NULL 
, CONSTRAINT PK_CIATTRIBUTEVALUE PRIMARY KEY 
  (
    CIATTRVALUEID 
  )

CREATE TABLE CIATTRIBUTETYPE 
(
  CIATTRTYPEID NUMBER(10, 0) NOT NULL 
, CITYPEID NUMBER(10, 0) 
, SUBTYPEID NUMBER(10, 0) 
, NAME NVARCHAR2(100) NOT NULL 
, DATAENTRYTYPE NUMBER(3, 0) NOT NULL 
, GROUPNAME NVARCHAR2(100) 
, ISLOGICALLYDELETED NUMBER(3, 0) DEFAULT 0 NOT NULL 
, ISRECYCLED NUMBER(3, 0) DEFAULT 0 NOT NULL 
, DATATYPE NUMBER(3, 0) DEFAULT 0 NOT NULL 
, ACCESSLEVELID NUMBER(10, 0) 
, ISREQUIRED NUMBER(3, 0) DEFAULT 0 NOT NULL 
, DESCRIPTION NVARCHAR2(150) 
, CONSTRAINT PK_CIATTRIBUTETYPE PRIMARY KEY 
  (
    CIATTRTYPEID 
  )

0 个答案:

没有答案