php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.01.2006, 11:37  
Gast
 
Beiträge: n/a
Standard CLOB als Rückgabewerte aus Oracle Stored Procedure

Hi,

ohne PDOs würde ich gerne ein CLOB entgegennehmen, den ich als Rückgabe aus einer Stored Procedure von Oracle enthalte. Ich habe nun schon einige Stunden probiert und gesucht, aber leider kein einigermaßen ähnliches Beispiel finden können. Auch die php-Referenz hat mir nicht so recht helfen können. Hier mein Ansatz:

Code:
// $sid ist die SESSION-ID die ich uebergebe, fuer die es einen User als "XML-CLOB" zurueck gibt
$stmt = oci_parse($conn, "DECLARE RetVal CLOB; P_SESSIONID VARCHAR2(200); BEGIN P_SESSIONID := '".$sid."'; RetVal := ABCSCHEMA.ABCINTERFACE.GETUSERIDBYSESSIONID ( P_SESSIONID ); END;");

// hier versuche ich "irgendwie" den "RetVal"-return als CLOB in $RetVal zu bekommen
$RetVal = oci_new_descriptor($conn, OCI_D_LOB);
oci_bind_by_name($stmt, ":RetVal", $RetVal, -1, OCI_B_CLOB);
Darauf erhalte ich die Warnung:
Zitat:
Warning: oci_bind_by_name() [function.oci-bind-by-name]: Error while trying to retrieve text for error ORA-01036 in ...
Im Code geht es weiter:
Code:
oci_execute($stmt);
oci_result($stmt, $RetVal);
die($RetVal);
Führt zu:
Zitat:
Warning: oci_result() [function.oci-result]: Invalid column index "1" in ...
Leider habe ich keinen Einfluss auf die Schnittstelle an sich.

Hoffe das mir jemand helfen kann...

Viele Grüße,
erdnah
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 31.01.2006, 11:43  
Gast
 
Beiträge: n/a
Standard ... und die Lösung des Problems.

Im Grunde fehlte nur der Doppelpunkt im Statement (und ein "&" für die Referenz beim oci_bind_by_name()-Aufruf).

Hier der (relevante) funktionserfüllende Code:
Code:
// XML-User holen, dazu StoredProcedure ABCSCHEMA.ABCINTERFACE.GETUSERIDBYSESSIONID(varchar2(200)) aufrufen
$stmtString = "DECLARE RetVal CLOB; P_SESSIONID VARCHAR2(200); BEGIN P_SESSIONID := '".$_GET['sid']."'; :RetVal := ABCSCHEMA.ABCINTERFACE.GETUSERIDBYSESSIONID ( P_SESSIONID ); END;";
$stmt = oci_parse($conn, $stmtString);

// CLOB bereitstellen
$RetVal = oci_new_descriptor($conn, OCI_D_LOB);
					
// Den Rueckgabewert der Stored Procedure (:RetVal) an $RetVal binden
oci_bind_by_name($stmt, ":RetVal", &$RetVal, -1, OCI_B_CLOB);

// Und ab!
oci_execute($stmt);

// XML-String als DOM-Objekt einlesen
$domObj = new domDocument();
$domObj->preserveWhiteSpaces = false;
$domObj->loadXML($RetVal->load());
Aus dem large Object holt man dann halt den "wahren Inhalt" mit $RetVal->load() raus... das hatte ich mir auch einfacher vorgestellt...

Grüße,
erdnah
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Stored Procedure - Invalid Format %d Rex Datenbanken 2 25.08.2006 10:13
Oracle Installation ? solitaer PHP-Fortgeschrittene 2 13.08.2005 13:17
Oracle auf dem Weg zum Monopol? imported_Ben Off-Topic Diskussionen 1 13.12.2004 13:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
oracle function mehrere rückgabeparameter, php ociresult clob, oracle clob stored procedure, php clob, ociresult invalid column index, clob durchsuchen, oracle clob functions, php ociresult clob to string, oracle mehrere werte zurückgeben, oracle an clob varchar2 anhängen, oracle mehrere rückgabewerte, oracle procedure clob, php oracle stored procedure results, clobals php, oci_result() [function.oci-result]: invalid column name, in php oracle funktion aufrufen, oracle stored procedure rckgabe einer liste von werten, oracle funktion clob als rueckgabewert, php oracle procredure, oracle clob in stored procedure

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:05 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.