<?php
/*
この PHP プログラムを実行する前に、SQL*Plus や SQL Developer で
ストアドプロシージャを作っておきます
CREATE OR REPLACE PROCEDURE myproc(p1 IN NUMBER, p2 OUT NUMBER) AS
BEGIN
p2 := p1 * 2;
END;
*/
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$p1 = 8;
// PL/SQL プログラムをパースするには、文字列の最後にセミコロンが必要です
$stid = oci_parse($conn, 'begin myproc(:p1, :p2); end;');
oci_bind_by_name($stid, ':p1', $p1);
oci_bind_by_name($stid, ':p2', $p2, 40);
oci_execute($stid);
print "$p2\n"; // 16 と表示します
oci_free_statement($stid);
oci_close($conn);
?>