Как получить возвращенное значение из хранимой функции в PDO? - PullRequest
2 голосов
/ 17 мая 2011

У меня есть этот код:

<code>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 "
";

ISPPRO.USERPKG.GET_USER возвращает 1 или 0;

Как я могу его получить ??

Заранее спасибо.

РЕДАКТИРОВАТЬ:

Я изменил вышеуказанный код, и я получаю эту ошибку:

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

Ответы [ 2 ]

2 голосов
/ 17 мая 2011

Если у вас есть функция Oracle, которая возвращает скаляр, вы читаете ее как любое другое значение, например ::

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

... и считайте значение из столбца foo, как и в любом другом запросе.

1 голос
/ 17 мая 2011

У вас есть разрешение на выполнение пакета?

Пользователь ISPPRO должен выполнить команду

GRANT EXECUTE ON userpkg TO <your_user>;

Простой способ проверить, было ли вам предоставлено команду execute для этого пакета, - запустить эту команду:

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

Вы должны получить строку с EXECUTE в качестве привилегии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...