是否可以为存储过程使用日期参数?例如,日期20171201我需要在dateparameter.prc中执行案例A,日期20171202在dateparameter.prc中执行案例B,这与上面的过程相同。我正在谷歌搜索和调查一些书籍,但我仍然没有找到解决方案。任何人都可以知道吗?谢谢
是否可以为存储过程使用日期参数?
是。将日期作为IN
日期参数并将其直接传递给OUT
日期参数的简单示例是:
CREATE PROCEDURE your_procedure(
in_value IN DATE,
out_return OUT DATE
)
IS
BEGIN
out_return := in_value;
END;
/
对的,这是可能的。
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
您的程序运作正常。但
dbms_ouput期间如何格式化(显示)日期将日期转换为字符串。由于在这种情况下存在隐式转换,因此结果格式由NLS_DATA_FORMAT设置控制。看起来你的设置为“dd-mm-yy”。要查看差异,请在exec语句之前插入/运行以下命令:
alter session set nls_date_format = 'yyyy-mm-dd
“;
另请参阅适用于Oracle 11g的Oracle Date Format或适用于您的版本。