Thread Mit bind_param_inout Rückgabewert einer PL/SQL-Function holen (4 answers)
Opened by pernox77 at 2011-08-08 13:40

pernox77
 2011-08-08 13:40
#151310 #151310
User since
2010-10-03
11 Artikel
BenutzerIn
[default_avatar]
Guten Tag zusammen,

ich sitze an einem Problem, das nicht nur Perl betrifft, sondern auch PL/SQL. Hoffentlich kann ich hier trotzdem hilfreiche Hinweise erhalten.

Also: Ich habe ein Perlskript, dass eine bestimmte PL/SQL-Funktion aufruft. Um zu sehen, was sich getan hat, gibt diese Funktion die Zahl der betroffenen Zeilen in der DB-Tabelle(Oracle) zurück (bzw. soll sie zurückgeben):
Code (perl): (dl )
1
2
3
4
my $SQL = "BEGIN :rows := SLP_IMPORT.IMPORT2RESULTS; END;";
my $sth = $dbh -> prepare($SQL);
$sth -> bind_param_inout(":rows", \$zeilenanzahl, 20);
$sth -> execute(); 

Die PL/SQL-Funktion gibt einen Integer-Wert zurück, der in meinem Testszenario zunächst immer genau 100 ist.
Rufe ich die Funktion für sich auf, also nicht über das Perlskript, funktioniert das auch wunderbar.

Aber mein Aufruf über Perl endet in einem Fehler: ORA-01722 Ungültige Zahl. Bzw. ORA-06512: ....DBD Error: OCIStmtExecute ......:rows=undef

Die PL/SQL-Funktion wird auch nicht ausgeführt.
Die Fehlerbehebung auch eigene Faust ergab bisher nichts. Ich hab als Datentyp noch Numbers probiert und auch die Speicherangabe (also die 20 siehe oben) im Perlaufruf erhöht. Keine Besserung :(
Bitte! Helft mir!
Danke
Pernox77

View full thread Mit bind_param_inout Rückgabewert einer PL/SQL-Function holen