PL / SQL我可以将一个%TYPE变量从函数转换为DATE吗?

时间:2013-09-30 17:33:32

标签: sql database plsql oracle11g

我的情况如下:我想对数据库进行查询,我想得到的一个字段是来自被调用函数的结果。问题是函数的返回类型声明为%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;

1 个答案:

答案 0 :(得分:0)

由于my_table.column_name%TYPE只是解析为DATE,因此无需转换它 - 查询中C的数据类型将自动为DATE

如果将来有人更改表中列的数据类型,则函数返回的数据类型将更改(假设函数声明未更改)。这将更改列C的数据类型。但是在这种情况下,如果你想返回一个DATE,你实际上还是需要更改查询,因为你必须添加逻辑来将数据从列更改的数据类型转换为DATE