我想在日期表中插入日期,方法是将日期作为('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;
答案 0 :(得分:2)
如果您知道日期的格式(例如,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'
但是,如果更改了默认格式并且您依赖它,则代码将中断。它还告诉读者代码您期望的日期格式是什么。