使用date参数的oracle存储过程

时间:2017-12-18 09:35:14

标签: oracle plsql

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

3 个答案:

答案 0 :(得分:0)

  

是否可以对存储过程使用日期参数?

是。将日期作为IN日期参数并将其直接传递给OUT日期参数的简单示例是:

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

答案 1 :(得分: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

答案 2 :(得分:0)

您的程序运作正常。但

  1. 表达"日期' 2017-12-02'"代表ISO日期标准。
  2. 表达式" dbms_output.put_line(' p_d =' || p_d)"表示在ISO规范之前的常规Oracle日期处理。
  3. dbms_ouput期间如何格式化(显示)日期将日期转换为字符串。由于在这种情况下存在隐式转换,因此结果格式由NLS_DATA_FORMAT设置控制。看起来你的设置为" dd-mm-yy"。要查看差异,请在exec语句之前插入/运行以下命令:

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

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