我有这段代码:
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
答案 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作为特权。