Thx für die Antwort, hab da schon etwas rumgetestet, letztendlich hat mir n Kollege geholfen, sieht nun so aus:
my $oraProc = "BEGIN pmisp_product_filldynattrib( $intart_id, $xfregid, \'$lang\',\'$lang\', $intstatussp, :x); END;";
$sth = $dbh->prepare($oraProc);
$sth->bind_param_inout( ":x", \$refcursor, 0, { ora_type => ORA_RSET } );
$sth->execute;
$sth->finish;
$val_len = 0;
while( @row = $refcursor->fetchrow_array()){
my $attid = $row[1];
my $attval = $row[4];
my $attname = $row[0];
my $vallen = length($attval);
my $idlen = length($attid);
if($val_len < $vallen){
$val_len = $vallen; #Bestimmen der maximalen Spaltenbreite
}
if($id_len < $idlen){
$id_len = $idlen; #Bestimmen der maximalen Spaltenbreite
}
my @data = ($attid, $attval, $attname);
push(@attribute, \@data);
}#while( @row = $refcursor->fetchrow_array())
#Kontrollstrukturen...
foreach $data (@attribute) {
my ($attid, $attval, $attname) = @$data;
$retval = $retval . sprintf("%-${id_len}s = %-${val_len}s (%s)\n", $attid, $attval, $attname);
#Festlegen der Spalten
}#foreach my $data (@attribute)