该函数假设以不同的格式返回日期,即全部。看不出有什么问题!
CREATE OR REPLACE
FUNCTION get_cpd(a_date in varchar2)return varchar2
IS
cpd varchar2(4);
BEGIN
SELECT TO_CHAR(TO_DATE(a_date,'YY/MM/DD'),'YDDD') INTO cpd FROM DUAL;
RETURN cpd;
END get_CPD;
答案 0 :(得分:1)
这不是你怎么称呼一个功能。在Oracle中,您必须始终从某些内容中进行选择。如果您没有实际的表来选择数据,那么请使用内置的单行表DUAL
:
select get_cpd('13/04/10') from dual;
如果它是较大查询的一部分,那么您可以传入一个列值:
select get_cpd(some_column) from some_table;
如果您是从另一个PL / SQL块或其他客户端调用它,那么您不必拥有select
,例如
declare
cpd varchar2(4);
begin
cpd := get_cpd('13/04/10');
end;
/
...但是假设你将使用该值而不仅仅是显示它。
顺便提一下,您可以简化功能,以便利用这种方式调用to_char
:
create or replace function get_cpd(a_date in varchar2)
return varchar2 is
begin
return to_char(to_date(a_date,'YY/MM/DD'),'YDDD');
end get_cpd;
/
select get_cpd('13/04/11') from dual;
GET_CPD('13/04/11')
--------------------------------------------------------------------------------
3101
您应该也可以使用RR
而不是YY
两位数,但请查看文档。