запустите plsql и получите DBMS_OUTPUT.PUT_LINE (yii)

я занимаюсь разработкой веб-приложения с базой данных oracle и инфраструктурой yii

    $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 в том же сеансе.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]