2016-06-20 8 views
1

Ich möchte Datum in meine Daten Tabelle einfügen, indem Sie Datum als ('19-JUN-1997') Parameter Prozedur übergeben. Könnte mir jemand ein Beispiel geben, wie es geht? Es scheint, dass ich etwas falsch mache mit dem Versuch, Datum einzufügen, indem Sie Variable in TO_DATE(my_var) setzen.PL/SQL Datum einfügen mit Prozedur

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

Können Sie eine Beschreibung der Tabelle "dates" angeben? Es scheint übrigens, dass Sie einen Zeichenparameter in eine Prozedur übergeben, die einen DATE-Datentyp erwartet. –

Antwort

2

Wenn Sie das Format des Datums kennen (zB dd-mon-yyyy) dann das sicherste, was zu tun ist, Ihre Insert-Anweisung machen wie so:

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

Damit das Beispiel funktioniert, muss das Datumsformat der Zeichenkette im Standard-Datumsformat in der Datenbank sein. Sie können den Wert der Datenbank Standardformat erhalten diese mit:

SELECT value 
FROM nls_session_parameters 
WHERE parameter = 'NLS_DATE_FORMAT' 

Wenn jedoch das Standardformat geändert wird und man darauf angewiesen sind, wird Ihr Code brechen. Es teilt dem Leser des Codes auch mit, welches Datumsformat Sie erwarten.