任何人都可以看到这个简单的 Oracle 函数有什么错误吗?

标签: Oracle oracle10g
发布时间: 2017/4/15 18:26:38
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

函数是假设在不同的格式,这就是返回的日期。看不到什么错误 !

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;

解决方法 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 为两位数字的年份,但检查文档。

官方微信
官方QQ群
31647020