Schrift
[thread]3535[/thread]

Perl/DBI - UPDATE "hängt" (Seite 2)



<< |< 1 2 >| >> 19 Einträge, 2 Seiten
Taulmarill
 2005-02-01 19:14
#32986 #32986
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
seltsam das, ich weiss schon, warum ich kein oracle benutz'
hast du den sql befehl man auf der komandozeile abgesetzt? evtl. braucht der einfach lange.
kommt das perlscript denn bis zum execute? füge dafür mal nen paar prints zwischen den DBI aufrufen ein und setz $| auf true (damit die ausgabe von print nicht gepuffert wird).
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Gast Gast
 2005-02-01 21:08
#32987 #32987
Blöde Idee: Mach mal ein commit, setze, wie mein Vorredner schon vorschlug, $| auf 1 und versuch's nochmal. Ich hatte mal ein ähnliches Problem mit Adabas.

hth,
p

edit: $| natürlich /vor/ dem Ganzen setzen. Sry.\n\n

<!--EDIT|phaylon|1107284977-->
nes
 2005-02-03 11:08
#32988 #32988
User since
2005-01-24
14 Artikel
BenutzerIn
[default_avatar]
Herzlichen Dank allen Helfern, es klappt :)

Ich habe zuerstmal die Variablen rausgenommen, und das betreffende Statement direkt, ohne übergebene Variablen, also so ausgeführt:
Code: (dl )
1
2
3
4
5
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:
Code: (dl )
1
2
3
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:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
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
ptk
 2005-02-03 16:45
#32989 #32989
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=nes,03.02.2005, 10:08]Ich persönlich halte das tatsächlich für einen Fehler im Modul Oracle::DBD - aber egal, hauptsache es geht jetzt. :)[/quote]
Hast du auch einen Eintrag in http://rt.cpan.org/NoAuth/ReportBug.html?Queue=DBD-Oracle gemacht?
nes
 2005-02-03 19:17
#32990 #32990
User since
2005-01-24
14 Artikel
BenutzerIn
[default_avatar]
[quote=ptk,03.02.2005, 15:45][quote=nes,03.02.2005, 10:08]Ich persönlich halte das tatsächlich für einen Fehler im Modul Oracle::DBD - aber egal, hauptsache es geht jetzt. :)[/quote]
Hast du auch einen Eintrag in http://rt.cpan.org/NoAuth/ReportBug.html?Queue=DBD-Oracle gemacht?[/quote]
Ähem ... Ich muss ehrlich gestehen, dazu sind meine Englisch-Kenntnisse etwas gar dürftig. Lesen/verstehen ja, aber selbst schreiben *schluck* ... Also nein, leider.

lg., nes
steffenw
 2005-02-04 11:51
#32991 #32991
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Eine Community lebt von Geben und Nehmen, auch wenn das Verhältnis nicht immer gleich sein muß. Also möchte ich Dir helfen, daß Du jetzt etwas geben kannst. Englisch schreiben ist auch immer nicht so mein Ding. Aber es gibt gute Helferlis http://www.tranexp.com:2000/InterTr....&to=eng. Damit kommst Du weiter. Auch die Sprachtools von Google sind nicht schlecht, Deutsch - Englisch ist schon mal dabei. Außerdem ist es dann mit dem Geben auch wieder nicht so schwer, weil Du ja auch wieder etwas dafür bekommst, nämlich bessere Englischkenntnisse. Also versuche es wenigstens, bleib dran. Du hilfst so Dir und anderen.
$SIG{USER} = sub {love 'Perl' or die};
ptk
 2005-02-04 11:59
#32992 #32992
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
@nes: Du kannst ja einen schoenen Bugreport auf deutsch formulieren (mit reproduzierbaren Testcase und so) und ich uebersetze :-)
nes
 2005-02-04 17:20
#32993 #32993
User since
2005-01-24
14 Artikel
BenutzerIn
[default_avatar]
[quote=ptk,04.02.2005, 10:59]@nes: Du kannst ja einen schoenen Bugreport auf deutsch formulieren (mit reproduzierbaren Testcase und so) und ich uebersetze :-)[/quote]
Wow, na das ist 'n Angebot :)

Okay, gerne, dann mach ich das am WoE soweit klar, teste es am Montag, dann hörst am Montag noch von mir.

Danke, nes
ptk
 2005-02-04 18:44
#32994 #32994
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Ok, allerdings werde ich fuer einige Tage offline sein (Perl-Workshop und so...).
<< |< 1 2 >| >> 19 Einträge, 2 Seiten



View all threads created 2005-02-01 17:02.