我的情况如下:我想对数据库进行查询,我想得到的一个字段是来自被调用函数的结果。问题是函数的返回类型声明为%TYPE
,它与某些表中某些列的数据类型相关联。但是在该查询中,我需要将此字段设为DATE
。有没有办法将此函数的结果转换为DATE
数据类型?
查询:
select t1.some_field as A,
t1.another_field as B,
my_function() as C
from my_table t1;
功能规格:
create or replace function my_function as
(
param1 default null
)
return my_table2.column_name%TYPE;
答案 0 :(得分:0)
由于my_table.column_name%TYPE
只是解析为DATE
,因此无需转换它 - 查询中C
的数据类型将自动为DATE
。
如果将来有人更改表中列的数据类型,则函数返回的数据类型将更改(假设函数声明未更改)。这将更改列C
的数据类型。但是在这种情况下,如果你想返回一个DATE
,你实际上还是需要更改查询,因为你必须添加逻辑来将数据从列更改的数据类型转换为DATE
。