2014-09-19 2 views
0

я занимаюсь разработкой веб-приложений с Oracle Database и фреймворказапустить PLSQL и получить DBMS_OUTPUT.PUT_LINE (юй)

$connection = Yii::app()->oo; 
    $command = $connection->createCommand("DECLARE V_COD NUMBER; v_Return DATA.FIND.T_REG; 
BEGIN 
V_COD := 1529; 
v_Return := FIND.DATA(
    V_COD => V_COD 
); 
DBMS_OUTPUT.PUT_LINE('CODE, '|| V_RETURN.CODE ||' WITH SERIE: '||V_RETURN.SERIE); 
END;"); 


     $rows = $command->execute(); 
     print_r($rows); 

выполняющем возврата запроса 1, я хочу получить выходное сообщение DBMS_OUTPUT.PUT_LINE. как я могу это сделать? любая идея? спасибо заранее!

ответ

0

Вы действительно, действительно, действительно не хотите создавать приложение, которое зависит от dbms_output. dbms_output существует, прежде всего, как быстрый и грязный способ отладки кода, если вам не удастся использовать настоящий отладчик. Обычно вы не должны предполагать, что был объявлен буфер для dbms_output, что буфер достаточно велик для того, что вы хотите написать, или что человек когда-либо увидит, что записано в буфер dbms_output. Большинство клиентских инструментов не объявляют такой буфер и не читают его, если они создают буфер.

Правильный способ возврата данных клиенту заключается в том, чтобы ваш код вызывал функцию (в данном случае) напрямую. Если ваша функция возвращает тип данных, который ваша структура не обрабатывает, создайте отдельную процедуру обертки, которая вызывает первую функцию, и имеет два параметра OUT для code и serie. Используйте переменные связывания в своем вызове и свяжите значения (например, 1529) с кодом.

Если вы действительно хотите прочитать из буфера (при условии, что он существует), вам нужно будет позвонить dbms_output.get_line в тот же сеанс.

Смежные вопросы