Herzlichen Dank allen Helfern, es klappt :)
Ich habe zuerstmal die Variablen rausgenommen, und das betreffende Statement direkt, ohne übergebene Variablen, also so ausgeführt:
my $sth = $dbh->prepare(q{
UPDATE DGKTO_BASIS
SET SVT_BEITRAGSKONTONUMMER = '00000000099'
WHERE VERSICHERUNGSTRAEGERCODE = '04' and DIENSTGEBERKONTONUMMER = '00000015'})
|| die "Can't prepare statement: $DBI::errstr";
Das brachte folgenden, sprechende Fehlermeldung:
C:\mist>perl mist.pl
DBD::Oracle::st execute failed: ORA-01401: inserted value too large for column (
DBD: oexec error) at mist.pl line 27.
Somit war's mir klar. Gleiche Anweisung, wobei aber das Feld $upd lt. Datenbankbeschreibung ein Byte verkürzt ist, funktioniert korrekt! Also so:
my $sth = $dbh->prepare(q{
UPDATE DGKTO_BASIS
SET SVT_BEITRAGSKONTONUMMER = ?
WHERE VERSICHERUNGSTRAEGERCODE = ? and DIENSTGEBERKONTONUMMER = ?})
|| die "Can't prepare statement: $DBI::errstr";
my $upd = "0000000100"; # Achtung auf die Länge!!
my $key1 = "04";
my $key2 = "00000015";
$sth->execute($upd, $key1, $key2) or die $dbh->errstr;
Ich persönlich halte das tatsächlich für einen Fehler im Modul Oracle::DBD - aber egal, hauptsache es geht jetzt. :)
Danke nochmals!
lg., nes