我需要使用列标题假脱机查询。查询本身可以正确运行,而虚拟标头查询可以单独正确运行。该查询使用序列对行进行顺序编号(它们代表订单行项目的等价物),如果我将两个查询联合起来,我得到的“指定的序列号(CURRVAL 或 NEXTVAL)是不合适的。
标题“查询”:
SELECT
'ITEM_NUMBER,
BM_NUMBER,
CREATION_DATE'
FROM DUAL;
资料查询:
SELECT
seq.nextval||';'||
BM_NUMBER||';'||
CREATION_DATE
FROM BIG_TABLE;
运行和返回都完全符合我的预期。
SELECT
'ITEM_NUMBER,
BM_NUMBER,
CREATION_DATE'
FROM DUAL
UNION
SELECT
seq.nextval||';'||
BM_NUMBER||';'||
CREATION_DATE
FROM BIG_TABLE;
返回错误。我预计会出现隐式类型转换错误,并且 TO_CHAR() 序列没有任何区别并且不是问题。我还希望数据查询完全独立于标题查询,因此与序列的工作方式无关。换句话说,我不明白对 seq.nextval 的调用何时知道或关心它之前的标头查询。
我足够敏锐想到的唯一解决方法是首先使用数据查询(带有序列)插入到表中,然后将标题查询与针对该表的另一个查询联合起来(消除使用序列的需要)全部在假脱机的 UNION 查询中。我很高兴这样做,但我想知道为什么我当前的查询失败并在没有其他不必要的读/写的情况下修复它。