2017-12-18 469 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