是否有一种方法可以显式地在公共表表达式中给出类型?



这是这个问题的另一个续集:

我已经应用了一个多态表函数来替换varchar2的所有空值。

在这个例子中:

WITH
a(aa1,aa2,aa3)
AS
(SELECT 1, '2', SYSDATE FROM DUAL
UNION ALL
SELECT NULL, NULL, NULL FROM DUAL)
SELECT *
FROM TABLE (f_replace_nulls(a))

aa2的类型是varchar2(1),因为'2'是varchar2(1)。如果f_replace_nulls将空值替换为'n/a',则dbfiddle中只会给出'n',并且在我的计算机上发生以下错误:

[Error] execute (2: 1): ORA-62576: target size(1)小于source size(3) for column(AA2) in Put Columns

代码为了消除这个问题,我想明确地提到aa2是一个varchar2(5)。

或者,如果有其他方法可以解决这个问题,我很乐意知道。

可以将文字强制转换为数据类型:

cast('2' as varchar2(5))

:

WITH
a(aa1,aa2,aa3)
AS
(SELECT 1, cast('2' as varchar2(5)), SYSDATE FROM DUAL
UNION ALL
SELECT NULL, NULL, NULL FROM DUAL)
SELECT *
FROM TABLE (f_replace_nulls(a))
AA2tn/

相关内容

最新更新