存储过程

PDO_ACI 支持绑定输出和输入/输出参数, 用于从存储过程获取值。 输出参数使用起来比输入参数要稍微复杂一些, 因为当绑定一个输出参数时, 必须知道给定参数的长度。 如果为参数绑定的值大于建议的长度, 就会产生错误。

编程示例

带输出参数调用存储过程的编程示例如下:

<?php
$dsn = "aci:dbname=localhost:2003/osrdb;charset=ZHS16GBK";
$user = "sysdba";
$pass = "szoscar55";

$dbh = new PDO($dsn, $user, $pass);
$stmt = $dbh->prepare("CALL sp_returns_string(?)");
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);

// 调用存储过程
$stmt->execute();

print "procedure returned $return_value\n";
?>

还可以指定同时具有输入和输出值的参数, 其语法类似于输出参数。 在下一个例子中, 字符串“hello”被传递给存储过程, 当存储过程返回时, hello 被替换为该存储过程返回的值。

<?php
$dsn = "aci:dbname=localhost:2003/osrdb;charset=ZHS16GBK";
$user = "sysdba";
$pass = "szoscar55";

$dbh = new PDO($dsn, $user, $pass);
$stmt = $dbh->prepare("CALL sp_takes_string_returns_string(?)");
$value = 'hello';
$stmt->bindParam(1, $value, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000);

// 调用存储过程
$stmt->execute();

print "procedure returned $value\n";
?>