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
> 

Reply via email to