如何从PDO中的存储函数中获取返回值?

时间:2011-05-17 10:36:14

标签: php oracle function pdo

我有这段代码:

include("connect.php");
// Call database function
$p = 100;
$sth = $conn->prepare('SELECT ISPPRO.USERPKG.GET_USER(:bind1, :bind3) AS v FROM DUAL');
$sth->bindParam(":bind1", $p, PDO::PARAM_INT);
$sth->bindParam(":bind3", $p, PDO::PARAM_INT);
$sth->execute();
$result = $sth->fetch(PDO::FETCH_ASSOC);
print_r( $result);
echo "<br><pre>";
print_r($conn->errorInfo());
echo "</pre>";

ISPPRO.USERPKG.GET_USER返回1或0;

我怎么能搞定?

提前致谢。

编辑:

我更改了上面的代码,我收到了这个错误:

OCIStmtExecute: ORA-00904: "ISPPRO"."USERPKG"."GET_USER": invalid identifier

2 个答案:

答案 0 :(得分:2)

如果您有一个返回标量的Oracle函数,则将其读作任何其他值,例如:

SELECT ISPPRO.USERPKG.GET_USER(:user, :pass) AS foo
FROM DUAL

...并在列foo中读取值,就像在任何其他查询中一样。

答案 1 :(得分:1)

你是否对包有执行权限?

用户ISPPRO应该运行命令

GRANT EXECUTE ON userpkg TO <your_user>;

检查是否已授予此程序包执行权的简单方法是运行以下命令:

SELECT privilege
  FROM all_tab_privs
 WHERE table_schema = 'ISPPRO'
   AND table_name = 'USERPKG';

你应该获得一行EXECUTE作为特权。