@Fuerchau,

leider habe ich keine irgendwie geartete open Anweisung in der PHP-Referenz gefunden.

@Birgitta

Das mit dem OpsNav war eine gute Idee, wenn ich da die Prozedur aufrufe, dann erhalte ich das Result Set zurück. Ich habe vorher den SET RESULT SETS mal auf RETURN TO CALLER geändert, leider nicht bei meinem Script. Aber wenn ich das richtig in Erinnerung habe, dann kommuniziert der OpsNav über JDBC-Treiber und nicht über den ODBC-Treiber. Ich weiß nicht, ob das irgendwelchen Einfluss hat.

@KM

Als erstes hatte ich schon, wie von dir vorgeschlagen den SET RESULT SETS ohne das FOR RETURN TO CLIENT gemacht. Da klappte der Aufruf zumindest auch.

Hier mal die Teile des Aufrufs:
Nicht nervös machen lassen, ich habe den Prozedure Namen geändert, um zu sehen ob der Aufruf auch eindeutig erfolgt.
1. Definition des Calls im Script:
Code:
$sql = "CALL RAUSER1.PRCWTRINF (WRITER=RAUOUT01  RAUSER1   )";
if ( !$db->sql_procedure($sql) )

/*$sql = "CALL RAUSER1.PRCWTRINF ('RAUOUT01  RAUSER1   ')";
if ( !$db->sql_query($sql) )*/
{
       $db_error = $db->sql_error();
       $error_status = TRUE ;
       $message[$message_counter]["errtxt"] =  $lang['error_sql'] . $db_error['message'] . "\nSQL: " .....
       $message_counter++ ;
}
else
{
       $obj_array = $db->sql_fetchrow($sql_result);
       $db->sql_freeresult($sql_result);
      print_r($obj_array);
}
Ich habe den ERROR-Teil mal ein bisschen gekürzt, damit er hier nicht das design zerreißt.

Das Zurück geben der Daten ist der gleiche Aufruf, den ich auch bei normalen SQL-Abfragen verwende, und die funktionieren Super.

Hier der eigentliche Aufruf:
Code:
function sql_procedure($query = '')
{
    $this->last_query_text = $query;
    $p_start = '(';
    $p_end = ')';
    $p_equal = '=';

    if ($query != '')
    {
        $no_parm = true;
        $parm_start = 0;
        $start_found = false;
        $parm_end = 0;
        $end_found = false;

        // check for parameters on string
        if ( stripos($query, $p_start) !== false )
        {
            $parm_start = stripos($query, $p_start);
            $start_found = true;
        }
        if ( stripos($query, $p_end) !== false )
        {
            $parm_end = stripos($query, $p_end);
            $end_found = true;
        }

        // No parameters or error on building
        if ( $start_found and $end_found )
        {
            $no_parm = false;
        }
        else
        {
            if ( !$start_found and !$end_found )
            {
            }
            else
            {
                return false;
            }
        }

        if ( !$no_parm )
        {
            $var_string = substr($query, $parm_start+1, $parm_end - $parm_start - 1);
            $cmd_string = substr($query, 0, $parm_start - 1);

            $exp_array = explode(",", $var_string);
            $count_var = count($exp_array);


            $x = 0;
            foreach( $exp_array as $exp_element )
            {
                $exp_element = trim($exp_element);
                if ( stripos($exp_element, $p_equal) !== false )
                {
                    $exp_delimiter = stripos($exp_element, $p_equal);
                    $par_array[$x] = substr($exp_element, $exp_delimiter + 1, strlen($exp_element) - $exp_delimiter - 1);
                }
                else
                {
                    $par_array[$x] = '';
                }
                $x++;
            }
            //$this->testvar[] = $par_array;

            $var_string = '(';
            for( $i=1; $i <= $count_var; $i++ )
            {
                $var_string .= '?';
                if ( $i < $count_var )
                {
                    $var_string .=',';
                }
            }
            $var_string .= ')';

            $query = $cmd_string . ' ' . $var_string;
        }

            // Execute the preapare statement
        if ( ($this->prepare_result = @odbc_prepare($this->db_connect_id, $query)) === false )
        {
            $this->sql_error($query);
            $this->error_connect_id = $this->db_connect_id;
            return false;
        }
        else
        {
            if ( !$no_parm )
            {
                if ( ($this->query_result = @odbc_execute($this->prepare_result, $par_array)) === false )
                {
                    $this->sql_error($query);
                    $this->error_connect_id = $this->db_connect_id;
                }
            }
            else
            {
                if ( ($this->query_result = @odbc_execute($this->prepare_result)) === false )
                {
                    $this->sql_error($query);
                    $this->error_connect_id = $this->db_connect_id;
                }
            }
        }
    }
    else
    {
        return false;
    }

    return ($this->query_result) ? $this->query_result : false;
}