我有以下查询,基于另一个关键查询,关键查询为我们获取数据,然后自动视图处理代码执行各种操作以制定它可以执行的查询。这样所有视图都以相同的方式处理。 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
)