首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle /SQL存储过程日期间隔精度ORA-30088

问Oracle /SQL存储过程日期间隔精度ORA-30088
EN

Stack Overflow用户
提问于 2013-12-03 02:49:42
回答 1查看 1.6K关注 0票数 2

在分配日期时间格式时,我在实现PL/SQL过程时遇到了问题。我指的是我的MySQL存储过程,我是Oracle /SQL的新手。

下面是我从MySQL过程中进行的PL/SQL转换

代码语言:javascript
复制
CREATE OR REPLACE 
PROCEDURE "DateTimeSP" (xType IN VARCHAR2, xResult OUT VARCHAR2)
AS
BEGIN

CASE
    WHEN xType = 'TIME' THEN 

             SELECT CURRENT_TIMESTAMP() FROM dual INTO xResult;

    WHEN xType = 'DATE' THEN 

            SELECT TRUNC(SYSDATE) FROM dual INTO xResult;

    WHEN xType = 'NOW' THEN 

            ( SELECT SYSTIMESTAMP) FROM dual INTO xResult;

    WHEN xType = 'NOWFORMAT' THEN 

              SELECT TO_CHAR(SYSTIMESTAMP,'%m/%d/%Y %l:%i:%s %p') FROM dual INTO xResult;

END CASE;

END;

这是我的错误日志

日期时间间隔精度ORA-30088 PL/ sql :ORA-00933: sql命令未正确结束 PL/ SQL :忽略SQL语句 请-00103:当期望下列之一时遇到符号选择

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-03 04:22:37

我为甲骨文修改了你的存储过程-

代码语言:javascript
复制
CREATE OR REPLACE 
PROCEDURE DateTimeSP (xType IN VARCHAR2, xResult OUT VARCHAR2)
AS
BEGIN
    CASE
        WHEN xType = 'TIME' THEN 
            SELECT TO_CHAR(SYSTIMESTAMP, 'HH24:MI:SS')
              INTO xResult
              FROM dual;
        WHEN xType = 'DATE' THEN 
            SELECT TRUNC(SYSDATE)
              INTO xResult  -- Returns date in the default format
              FROM dual;
        WHEN xType = 'NOW' THEN 
           SELECT TO_CHAR(SYSTIMESTAMP)
             INTO xResult
             FROM dual;
        WHEN xType = 'NOWFORMAT' THEN 
           SELECT TO_CHAR(SYSTIMESTAMP, 'MM/DD/YYYY HH:MI:SS AM')
             INTO xResult
             FROM dual;
    END CASE;
END;
/

不要忘记在TO_CHAR上详细阅读Oracle Docs函数。对于格式化日期、时间和时间戳,它是一个非常灵活的功能。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20341936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档