-
@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;
}
Schönen Gruß aus Kiel
Jörg
Similar Threads
-
By rebe in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 12-10-06, 11:22
-
By KM in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 22-05-06, 14:22
-
By florian in forum IBM i Hauptforum
Antworten: 10
Letzter Beitrag: 17-05-06, 16:08
-
By peter.kinne in forum IBM i Hauptforum
Antworten: 13
Letzter Beitrag: 15-04-05, 09:04
-
By Frank Pusch in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 13-06-01, 17:57
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks