Hallo,
DECLARE
P_C VARCHAR2(200);
P_ID NUMBER;
P_OUT VARCHAR2(200);BEGIN
P_C := '41795849067';
P_ID := 1;
P_OUT := NULL;DB_KDB.V5 ( P_C, P_ID, P_OUT );
DBMS_OUTPUT.Put_Line('P_OUT = ' || P_OUT);
COMMIT;
END;
Hab jetzt gerade kein Oracle installiert zum testen (und auch nicht die Zeit, das zu tun ;-)), aber meines Wissens kannst Du den ganzen Krempel oben an OCIParse übergeben (da BEGIN/END verwendet werden - allerdings bin ich mir nicht 100%ig sicher, da Du auch DECLARE verwendest):
$stmt = [link:http://de3.php.net/OCIParse@title=OCIParse]($connection,
'[code lang=sql]DECLARE
P_C VARCHAR2(200);
P_ID NUMBER;
P_OUT VARCHAR2(200);
BEGIN
P_C :=
~~~\'41795849067\'~~~sql
;
P_ID := 1;
P_OUT := NULL;
DB_KDB.V5 ( P_C, P_ID, P_OUT );
DBMS_OUTPUT.Put_Line(
~~~\'P\_OUT = \'~~~sql
|| P_OUT);
COMMIT;
END;
~~~');
$res = [OCIExecute](http://de3.php.net/OCIExecute)($stmt);[/code]
(`$connection`{:.language-php} ist Deine Oracle-Verbindungsresource, die Du über [OCILogon](http://de3.php.net/OCILogon) erhälst)
Allerdings: Bei der letzten Zeile Deines Codes `DBMS_OUTPUT.Put_Line`{:.language-sql} habe ich irgendwie meine Zweifel, dass das funktioniert, wenn Du P\_OUT haben willst, solltest Du veilleicht am Ende lieber ein `SELECT P_OUT FROM DUAL`{:.language-sql} machen, dann kannst Du in PHP (falls `$res`{:.language-php} true ist) folgendes machen:
~~~php
$nrows = OCIFetchStatement($stmt, $rows);
$p_out = $rows['P_OUT'][0];
Dann steht in $p_out der Wert für P_OUT aus Deinem SQL-Statement. (Hinweis: Die OCI-Funktionen wurden unter PHP5 umbenannt, ich habe hier die PHP4-Funktionen verwendet, die auch weiterhin in PHP5 funktionieren, die jedoch bei reinen PHP5-Systemen nicht mehr verwendet werden sollten - OCIFetchStatement ist seltsamerweise gar nicht mehr dokumentiert, oci_fetch_all wäre hier die PHP5-Entsprechung, bei der jedoch meiner Erinnerung nach nur die ersten beiden Parameter mit denen von OCIFetchStatement übereinstimmen.)
Viele Grüße,
Christian