2016-05-05 5 views
1

これはPL/SQLで記述したコードです.csvファイルからデータを読み取り、Oracleデータベースの表に挿入しようとしています。 、= TO_TIMESTAMP(SUBSTR(l_line:PL/SQLストアド・プロシージャのエラー

は、通常、私は、私は今、私はエラーを取得しています

insert into t (start_time) values 
(TO_TIMESTAMP('12-SEP-12 10.31.19','DD-MON-YY HH.MI.SS')) 

次の操作を行いタイムスタンプの値を挿入すると、

f_call_start下に示すように、病棟でのこれらの行からcomma2 + 1、comma3-comma2-1)、 'DD-MON-YY HH.MI.SS'); エラー(38,28):PLS-00306:間違った番号または呼び出しの引数のタイプの '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; 
+0

する必要がありますあなたがいます'PUT_LINE'にアンダースコアがありません。さて、あなたは動的に質問を変えています。昔、私たちはRTFMを言っていました!構文エラー! substrの引数を調べて少し時間をかけてください。 –

+0

ええ、私は非常にばかげた私の間違いを認識しましたが、今、次のエラーが発生しています。エラー(38,28):PLS-00306:この行の 'SUBSTR'を呼び出す際に引数またはタイプが間違っています。f_call_start: to_timestamp(substr(l_line、comma2 + 1、comma3 = comma2-1)、 'DD-MON-YY HH.MI.SS'); – pavikirthi

+0

ええ、あなたは自分を見つめて、まだ必要があればさらに具体的な質問をするだけでいいです。また、行番号を参照する場合は、転記する前に追加してください。私は誰もがラインを数えようとは思わない。とにかく木曜日の17:00にはありません。 : - /私はいい男だからヒント:あなたの等号は属していません。 –

答えて

0

それは、dbms_output.put_line

+0

ええ、私は今非常にばかげた間違いだが、私は今、次のエラーが発生していることを認識しました:エラー(38,28):PLS-00306:この行から 'SUBSTR'への呼び出しで引数の数またはタイプが間違っているf_call_start:to_timestamp (substr(l_line、comma2 + 1、comma3 = comma2-1)、 'DD-MON-YY HH.MI.SS'); – pavikirthi

+0

substr(l_line、comma2 + 1、comma3 = comma2-1)とは何ですか?それはデバッグしやすくなります。私は、文字列形式が '' DD-MON-YY HH.MI.SS ''に当てはまらないと思います。 – Dere0405

関連する問題