I am trying to update a table in an Oracle database. I am reading an input file which has the column names for the database as the first record in the file. The data begins in the second row. I read the first record to pull off the column names. I create the sql using placeholders. I then read the rest of the file. At the end of the loop I attempt to perform the 'execute' using the statement handle of the database. I get the following error.
DBD::Oracle::st execute failed: ORA-01722: invalid number (DBD ERROR: OCIStmtExecute) at ./ins line 61, <$FH> line 1. At the time of the execute @ins = "20", "00002", "Hello, Dolly", "000", "01", "022" # assume sth is a valid statement handle # assume $FH is a handle to an opened file my $columns = <$FH>; # # read first record of input file # split the column headers # my $columnitem; chomp($columns); @ins = split /\|/, $columns; foreach $columnitem (@ins) { $columnitem = "\"".$columnitem."\""; } my $formatcolumns=join ( ', ', @ins ); my $valstring= join ( ', ' , ('?') x scalar @ins ); my $sql= "INSERT INTO $table ( $formatcolumns ) VALUES ( $valstring) "; while ( my $line = <$FH> ) { # # split the data fields # chomp($line); my $field; @ins = split /\|/, $line; foreach $field (@ins) { $field = "\"".$field."\","; } chop($ins[-1]); # remove comma from last item in array #the actual sequence $sth->execute(@ins) or $err++; }