2017-12-18 463 views
-3

是否可以为存储过程使用日期参数? 例如,日期20171201我需要在dateparameter.prc 中执行一个案例A,并且日期20171202在dateparameter.prc中执行一个case B,这与上面的过程相同。 我使用谷歌搜索和调查一些书籍,但我仍然没有找到解决办法。 任何人都可以知道吗? 谢谢使用日期参数的oracle存储过程

+6

所以,问题是:”是这个可能吗?“答案是”是的,这是可能的“ – Dmitry

+0

你可以传递任何类型的参数DATE是标准的内置类型,就像NUMBER或VARCHAR2一样。工作? –

+0

谢谢,我是新手,所以对oracle还不太了解。 有个美好的一天〜! – Sudal

回答

0

是否有可能使用存储过程的日期参数?

是的。一个简单的例子,需要一个日期作为IN日期参数,并将其传递直接与OUT日期参数为:

CREATE PROCEDURE your_procedure(
    in_value IN DATE, 
    out_return OUT DATE 
) 
IS 
BEGIN 
    out_return := in_value; 
END; 
/
+0

谢谢你的例子! – Sudal

0

是的,这是可能的。

SQL> set serveroutput on 

SQL> create procedure dt_demo(p_d date) as 
    2 begin 
    3 dbms_output.put_line('p_d = ' || p_d); 
    4 end; 
    5/

Procedure created 

SQL> exec dt_demo(date '2017-12-02'); 

p_d = 02.12.17 

PL/SQL procedure successfully completed 
+0

感谢您的评论 我现在在做编码! – Sudal

0

您的程序运行正常。但是

  1. 表达式“DATE”2017-12-02'“代表ISO日期标准。
  2. 表达式“dbms_output.put_line('p_d ='|| p_d)”表示在ISO规范之前的常规Oracle日期处理。

在dbms_ouput期间格式化(显示)日期的方式将日期转换为字符串。由于在这种情况下存在隐式转换,所得格式由NLS_DATA_FORMAT设置控制。它看起来像你的设置为“dd-mm-yy”。要看到不同的插入/你的EXEC语句之前运行以下命令:

alter session set nls_date_format = 'yyyy-mm-dd“;

另请参阅Oracle Date Format用于Oracle 11g或以适合您的版本

+0

感谢您的评论! – Sudal