【问题标题】:PL/SQL insert date with procedurePL/SQL 用过程插入日期
【发布时间】:2016-06-20 20:45:08
【问题描述】:

我想通过将日期作为('19-JUN-1997') 参数传递给过程来在我的日期表中插入日期。谁能给我一个例子如何做到这一点?似乎我在尝试通过将变量放入 TO_DATE(my_var) 来插入日期时做错了。

SET SERVEROUTPUT ON
BEGIN 
p_date('14-MAR-2017');
END;

CREATE OR REPLACE PROCEDURE p_date(
v_date IN Dates.date1%type) IS
BEGIN
INSERT INTO Dates
(date1)
VALUES
(TO_DATE(v_date ));
END;

【问题讨论】:

  • 您能否描述一下dates 表?顺便说一句,看起来您正在将字符参数传递给需要 DATE 数据类型的过程。

标签: oracle date plsql insert


【解决方案1】:

如果您知道日期的格式(例如,dd-mon-yyyy),那么最安全的做法是让您的插入语句如下所示:

INSERT INTO Dates (date1)
VALUES (TO_DATE(v_date, 'DD-MON-YYYY');

为了使您的示例正常工作,字符串日期格式必须是数据库中的默认日期格式。您可以使用以下方法获取数据库默认格式的值:

SELECT value
FROM   nls_session_parameters
WHERE  parameter = 'NLS_DATE_FORMAT'

但是,如果更改了默认格式并且您依赖它,您的代码将会中断。它还告诉代码的读者您期望的日期格式是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-27
    • 2013-11-13
    • 2017-10-18
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    相关资源
    最近更新 更多