You have ARTIKEL in the insert statement, but ARTIKELNUMMER in the table. See also:
http://search.cpan.org/~timb/DBD-Oracle-1.15/Oracle.pm#Prepare_postponed_til l_execute ... for a possible reason why it's not failing on the prepare, but later on the execute. -- Andy Hassall <[EMAIL PROTECTED]> / Space: disk usage analysis tool <http://www.andyh.co.uk> / <http://www.andyhsoftware.co.uk/space> > -----Original Message----- > From: Dr. Frank Ullrich [mailto:[EMAIL PROTECTED] > Sent: 03 August 2004 08:21 > To: [EMAIL PROTECTED] > Subject: ORA-904 "invalid column name": wrong error message? > > Hi, > > I've got a mysterious problem with Oracle-DBD (v. 1.12) and DBI 1.32 > against an Oracle 8.1.7.3 database. > An execute fails with ORA-904 ("invalid column name") although the > column names are correct and the prepare (it's an INSERT statement) > succeeded! > > > > > ============================================================= > 1. the error: > ============================================================= > DBD::Oracle::st execute failed: ORA-00904: invalid column name (DBD > ERROR: OCIStmtExecute) at ... line 2542. > > > ============================================================= > 2. line 2542 and predecessors (the binding): > ============================================================= > $sth_itmarkt_i_log->bind_param(1,$einzelne_datei); > $sth_itmarkt_i_log->bind_param(2,$import_nummer); > $sth_itmarkt_i_log->bind_param(3,$h_kunde{'Bestellzeichen'} ne > ''?$h_kunde{'Bestellzeichen'}:undef); > $sth_itmarkt_i_log->bind_param(4,$h_zusatzinfo{'Bestell-ID'} ne > ''?$h_zusatzinfo{'Bestell-ID'}:undef); > $sth_itmarkt_i_log->bind_param(5,$h_zusatzinfo{'Bestelldatum'} ne > ''?$h_zusatzinfo{'Bestelldatum'}:undef); > $sth_itmarkt_i_log->bind_param(6,$todo_kunde_updaten eq > '1'?'i':(($todo_auftrag_kunde_anlegen eq '1')||($todo_ > nur_kunde_anlegen eq '1'))?'a':'0'); > $sth_itmarkt_i_log->bind_param(7,(($todo_auftrag_kunde_anlegen eq > '1')||($todo_nur_auftrag_anlegen eq '1'))?'1':'0'); > $sth_itmarkt_i_log->bind_param(8,$h_kunde{'T3_Kundennummer'} ne > ''?$h_kunde{'T3_Kundennummer'}:undef); > $sth_itmarkt_i_log->bind_param(9,$kundennummer ne > ''?$kundennummer:undef); > $sth_itmarkt_i_log->bind_param(10,$h_kunde{'Kundenkennung'} ne > ''?$h_kunde{'Kundenkennung'}:undef); > $sth_itmarkt_i_log->bind_param(11,(defined($h_kunde{'Bemerkung > _Kunde'}))?$h_kunde{'Bemerkung_Kunde'}:undef); > $sth_itmarkt_i_log->bind_param(12,(defined($h_kunde{'Bemerkung > '}))?$h_kunde{'Bemerkung'}:undef); > $sth_itmarkt_i_log->bind_param(13,undef); > $sth_itmarkt_i_log->bind_param(14,undef); > $sth_itmarkt_i_log->bind_param(15,undef); > $sth_itmarkt_i_log->bind_param(16,undef); > $sth_itmarkt_i_log->bind_param(17,undef); > $sth_itmarkt_i_log->execute || die "$DBI::errstr\n"; > > > > ============================================================= > 3. the prepare (where I'd expected the error to happen if at all) > ============================================================= > $stm_itmarkt_i_log=<<EOINSERT_LOG > INSERT INTO VAS.ITMARKT_IMPORT_LOG > (DATUM_IMPORT, PGP_DATEI, IMPORT_NUMMER, > BESTELLZEICHEN, BESTELL_ID, BESTELL_ID_DATUM, > KUNDENANLAGE, > AUFTRAGSANLAGE, > T3_KUNDENNUMMER, KUNDENNUMMER, > KUNDENKENNUNG, BEMERKUNG_KUNDE, BEMERKUNG, > artikel, menge, preiscode, abrechnungsrhythmus, t3_preis > ) > VALUES > (sysdate, ?, ?, > ?, ?, ?, > ?, > ?, > ?,?, > ?,?,?, > ?,?,?,?,? > ) > EOINSERT_LOG > ; > #--- > $sth_itmarkt_i_log = > $dbh->prepare(qq[$stm_itmarkt_i_log]); > > > ============================================================= > 4. the trace (level 4) output: > ============================================================= > --------------------------------------- > a) prepare > --------------------------------------- > -> prepare for DBD::Oracle::db > (DBI::db=HASH(0x8436db4)~0x840cb20 > 'INSERT INTO VAS.ITMARKT_IMPORT_L > OG > (DATUM_IMPORT, PGP_DATEI, IMPORT_NUMMER, > BESTELLZEICHEN, BESTELL_ID, BESTELL_ID_DATUM, > KUNDENANLAGE, > AUFTRAGSANLAGE, > T3_KUNDENNUMMER, KUNDENNUMMER, > KUNDENKENNUNG, BEMERKUNG_KUNDE, BEMERKUNG, > artikel, menge, preiscode, abrechnungsrhythmus, t3_preis > ) > VALUES > (sysdate, ?, ?, > ?, ?, ?, > ?, > ?, > ?,?, > ?,?,?, > ?,?,?,?,? > ) > ') > New DBI::st (for DBD::Oracle::st, > parent=DBI::db=HASH(0x840cb20), id=) > > dbih_setup_handle(DBI::st=HASH(0x818e210)=>DBI::st=HASH(0x847aaa8), > DBD::Oracle::st, 818e228, Null! > ) > dbih_make_com(DBI::db=HASH(0x840cb20), DBD::Oracle::st, > 208) thr#(nil) > dbd_preparse scanned 17 distinct placeholders > dbd_st_prepare'd sql INSERT > dbd_describe skipped for INSERT > <- prepare= DBI::st=HASH(0x818e210) at Web2VASTEST line 846 via > /opt/local/oracle/bin/Web2VASTEST l > ine 4563 > > > --------------------------------------- > b) error > --------------------------------------- > ... > -> bind_param for DBD::Oracle::st > (DBI::st=HASH(0x818e210)~0x847aaa8 9 ' T_Kd-Nr') > bind :p9 <== ' T_Kd-Nr' (type 0) > bind :p9 <== ' T_Kd-Nr' (size 8/9/0, ptype 4, otype 1) > bind :p9 <== ' T_Kd-Nr' (size 8/8, otype 1, indp 0, at_exec 1) > bind :p9 done with ftype 1 > <- bind_param= 1 at Web2VASTEST line 2533 via > /opt/local/oracle/bin/Web2VASTEST line 4594 > > > ... > > -> execute for DBD::Oracle::st > (DBI::st=HASH(0x818e210)~0x847aaa8) > dbd_st_execute INSERT (out0, lob0)... > in ':p1' [0,0]: len 24, ind 0 > in ':p4' [0,0]: len 10, ind 0 > in ':p5' [0,0]: len 8, ind 0 > in ':p6' [0,0]: len 1, ind 0 > in ':p7' [0,0]: len 1, ind 0 > in ':p8' [0,0]: len 10, ind 0 > in ':p9' [0,0]: len 8, ind 0 > OCIErrorGet after OCIStmtExecute (er1:ok): -1, 904: ORA-00904: > invalid column name > > !! ERROR: 904 'ORA-00904: invalid column name (DBD ERROR: > OCIStmtExecute)' > <- execute= undef at Web2VASTEST line 2542 via > /opt/local/oracle/bin/Web2VASTEST line 4594 > -> rollback for DBD::Oracle::db > (DBI::db=HASH(0x8436db4)~0x840cb20) > <- rollback= 1 at Web2VASTEST line 4601 > -> disconnect for DBD::Oracle::db > (DBI::db=HASH(0x8436db4)~0x840cb20) > <- disconnect= 1 at Web2VASTEST line 4703 > -- DBI::END > > > > ============================================================= > 5. the table description: > ============================================================= > SQL> desc itmarkt_import_log > Name Null? Typ > ----------------------------------------- -------- > ------------------- > DATUM_IMPORT DATE > IMPORT_NUMMER NUMBER > BESTELLZEICHEN VARCHAR2(20) > BESTELL_ID VARCHAR2(32) > BESTELL_ID_DATUM DATE > T3_KUNDENNUMMER VARCHAR2(16) > KUNDENNUMMER VARCHAR2(8) > KUNDENKENNUNG CHAR(2) > BEMERKUNG_KUNDE VARCHAR2(2000) > KUNDENANLAGE CHAR(1) > AUFTRAGSANLAGE CHAR(1) > BEMERKUNG VARCHAR2(2000) > ARTIKELNUMMER VARCHAR2(13) > MENGE NUMBER > PREISCODE CHAR(1) > ABRECHNUNGSRHYTHMUS CHAR(1) > T3_PREIS NUMBER(8,2) > PGP_DATEI VARCHAR2(32) > > > > > So I'm at a loss where to look further / what to do next. > Someone with a hint for me, please? > > > Regards, > Frank. > > > > > > > > > > > -- > Dr. Frank Ullrich, DBA Netzwerkadministration > Heise Zeitschriften Verlag GmbH & Co KG, Helstorfer Str. 7, > D-30625 Hannover > E-Mail: [EMAIL PROTECTED] > Phone: +49 511 5352 587; FAX: +49 511 5352 538 >
