如何从PDO中的存储函数获取返回值?
问题描述:
我有这样的代码:如何从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
答
您是否拥有包裹执行权限?
用户ISPPRO需要运行这个命令
GRANT EXECUTE ON userpkg TO <your_user>;
一个简单的方法来检查,如果你已经被授予执行这个包是运行此命令:
SELECT privilege
FROM all_tab_privs
WHERE table_schema = 'ISPPRO'
AND table_name = 'USERPKG';
你应该得到一个排以EXECUTE作为特权。
答
如果你有一个返回你读它像任何其他值标量,例如一个Oracle函数:
SELECT ISPPRO.USERPKG.GET_USER(:user, :pass) AS foo
FROM DUAL
...并像在任何其他查询中那样从列foo
读取值。
+0
我编辑了这个问题,现在我得到这个错误:'OCIStmtExecute:ORA-00904:“ISPPRO”。“USERPKG”。“GET_USER”:无效标识符 – Saleh 2011-05-17 12:49:12
你不会说你的数据库管理系统是什么,但一般来说,程序应该*不*返回值。也许你必须写一个函数: - ? – 2011-05-17 10:40:58
你能告诉我如何从函数获取返回值吗? – Saleh 2011-05-17 10:45:00
在MySQL中,您会定期执行'SELECT my_function()AS name'查询并从'name'中读取值。你不会说你的DBMS是什么。 – 2011-05-17 10:56:48