Выполнение процедуры Oracle с использованием PHP - возможно?

Я пытаюсь запустить очень простую процедуру Oracle из PHP, используя следующую инструкцию:

$sql = 'exec procedureName(param1, param2)';
$sql = oci_parse($connection, $sql); oci_execute($sql);

Выполнение этого в Oracle SQL Developer возвращает успешное сообщение «анонимный блок завершен», но запуск этого через PHP возвращает ошибку «ORA-00900: недопустимый оператор SQL».

Есть ли способ запустить эту процедуру с PHP? Большое спасибо


person Nick    schedule 18.04.2012    source источник
comment
Попробуйте избавиться от exec в $ sql.   -  person Bob Jarvis - Reinstate Monica    schedule 18.04.2012
comment
Большое спасибо, хорошее предложение, но я получаю ту же ошибку   -  person Nick    schedule 18.04.2012


Ответы (1)


Заглянув немного глубже, я думаю, вам нужно поместить вызов процедуры в пару PL / SQL BEGIN-END, как в:

$sql = 'BEGIN procedureName(:param1, :param2); END;';
$stmt_id = oci_parse($connection, $sql);
oci_bind_by_name($stmt_id, ':param1', $value1);
oci_bind_by_name($stmt_id, ':param2', $value2);
oci_execute($stmt_id);

Вам нужно будет отредактировать приведенное выше, чтобы использовать любые имена переменных, подходящие для вызовов oci_bind_by_name.

Также обратите внимание, что наличие точки с запятой в строке SQL важно.

Делитесь и наслаждайтесь.

person Bob Jarvis - Reinstate Monica    schedule 18.04.2012