Dies ist der Code, den ich in PL/SQL geschrieben habe Ich versuche, Daten aus einer CSV-Datei zu lesen und in eine Tabelle in einer Oracle-Datenbank einzufügen.Fehler PL/SQL gespeicherte Prozedur
Normalerweise, wenn ich einfügen Zeitstempel Werte ich die folgende
insert into t (start_time) values
(TO_TIMESTAMP('12-SEP-12 10.31.19','DD-MON-YY HH.MI.SS'))
Jetzt bin ich Fehler bekommen, von diesen Linien auf den Stationen, wie unten
f_call_start gezeigt: = to_timestamp (substr (L_LINE, Komma2 + 1, Komma3-Komma2-1), 'DD-MON-YY HH.MI.SS'); Error (38,28): PLS-00306: falsche Anzahl oder Arten von Argumenten in Aufruf von 'SUBSTR'
call_record_processor('calldata');
create or replace procedure call_record_processor(file_name_input in varchar2)
is
l_file UTL_FILE.file_type;
l_line varchar2(100);
l_eof boolean:=false;
comma1 varchar2(10);
comma2 varchar2(10);
comma3 varchar2(10);
comma4 varchar2(10);
f_source_no call_usage.source_phone_number%type;
f_dest_no call_usage.destination_phone_number%type;
f_call_start call_usage.call_start_time%type;
f_call_end call_usage.call_end_time%type;
begin
l_file:=UTL_FILE.fopen('c:\temp\',file_name_input,'r');
loop
begin
utl_file.get_line(l_file,l_line);
dbms_output.put_line(l_line);
EXCEPTION
when no_data_found then
exit;
end;
comma1:=INSTR(l_line,',',1,1);
comma2:=INSTR(l_line,',',1,2);
comma3:=INSTR(l_line,',',1,3);
comma4:=INSTR(l_line,',',1,4);
f_source_no:=SUBSTR(l_line,1,comma1-1);
dbms_output.put_line('source_phone_number='||f_source_no);
f_dest_no:=SUBSTR(l_line,comma1+1,comma2-comma1-1);
dbms_output.put_line('destination_phone_number='||f_dest_no);
f_call_start:=to_timestamp(substr(l_line,comma2+1,comma3=comma2-1),'DD-MON-YY HH.MI.SS');
dbms_output.put_line('call_start_time='||f_call_start);
f_call_end:=to_timestamp(substr(l_line,comma3+1,comma4-comma3-1),'DD-MON-YY HH.MI.SS');
dbms_output.put_line('call_end_time='||f_call_end);
insert into call_usage values(f_source_no,f_dest_no,f_call_start,f_call_end);
end loop;
utl_file.fclose(l_file);
COMMIT;
end call_record_processor;
Sie sein sind fehlt der Unterstrich in 'PUT_LINE'. Nun, jetzt ändern Sie die Frage dynamisch. Früher sagten wir RTFM! für Syntaxfehler! Verbringen Sie ein wenig Zeit, um die Argumente für substr. –
Ja, ich habe diesen sehr dummen Fehler von mir erkannt, aber ich erhalte jetzt den folgenden Fehler. Fehler (38,28): PLS-00306: falsche Anzahl oder Arten von Argumenten im Aufruf von 'SUBSTR' von dieser Zeile auf f_call_start: = to_timestamp (substr (l_line, komma2 + 1, komma3 = komma2-1), 'DD-MON-YY HH.MI.SS'); – pavikirthi
Ja, dass Sie nur selbst aufschauen und eine genauere Frage stellen müssen, wenn sie noch benötigt wird. Wenn Sie sich auf Zeilennummern beziehen, fügen Sie sie vor dem Senden hinzu. Ich bezweifle, dass irgendjemand Zeilen zählen wird. Nicht an einem Donnerstag um 17 Uhr. : -/Hinweis weil ich ein netter Kerl bin: Dein Gleichheitszeichen gehört nicht dazu. –