я занимаюсь разработкой веб-приложения с базой данных 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.
Как я могу это сделать?
любая идея?
заранее спасибо!!!
Вы действительно, действительно, действительно не хотите создавать приложение, которое зависит от dbms_output
, dbms_output
существует главным образом как быстрый и грязный способ отладки кода, если вы не можете использовать настоящий отладчик. Как правило, вы не должны предполагать, что буфер для dbms_output
было объявлено, что буфер достаточно велик для того, что вы хотите написать, или что человек когда-либо увидит, что написано dbms_output
буфер. Большинство клиентских инструментов не объявляют такой буфер и не читают из него, если они создают буфер.
Правильный способ вернуть данные клиенту состоит в том, чтобы ваш код вызывал функцию (в данном случае) напрямую. Если ваша функция возвращает тип данных, который не обрабатывается вашей структурой, создайте отдельную процедуру-оболочку, которая вызывает первую функцию и имеет два OUT
параметры для code
а также serie
, Используйте переменные связывания в вашем вызове и связывайте значения (например, 1529) из кода.
Если вы действительно хотите читать из буфера (если он существует), вам нужно вызвать dbms_output.get_line
в том же сеансе.
Других решений пока нет …