Oracle: какие-либо замены для пакета DBMS_OUTPUT?

Проблема:

Согласно вашему коду. Вы отправляете значение Integer в SixthActivity и сохраняете в строковую переменную

ThirdActictivity

int radioIdExperience = thirdRadioGroup.getCheckedRadioButtonId ();

SixthActivity

]

String experience = intent.getStringExtra ("Experience");

Решения. Перед отправкой убедитесь, что вы отправляете правильное значение, и проверьте его в THirdActivity. Затем проверьте отправленное значение на SixthActivity

Надеюсь, это поможет ...

5
задан MatthewMartin 22 May 2014 в 13:59
поделиться

6 ответов

Возможно, одна из этих опций удовлетворит Вашим потребностям (зависящий, пишете ли Вы что-то на стороне сервера или стороне клиента):

(обновление Mark Harrison) я пошел с my-dbms-output пакетом в сообщении AskTom. Одна действительно хорошая функция - то, что можно получить доступ к результатам через представление, так, чтобы было легко показать вывод в клиентской программе. Я переименовал его к более короткому имени.

7
ответ дан 18 December 2019 в 08:31
поделиться

Какая версия Oracle? Оба из тех ограничений были ослаблены в последних версиях. 10,2 строк поддержек дольше, чем 255 символов (новый предел является 32k) и устраняют максимальное ограничение размера буфера. Oracle 9.2 имел эти 255 символов на строку / общий предел на 1 МБ, но Oracle имеет desupported та версия.

6
ответ дан 18 December 2019 в 08:31
поделиться

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

sys.dbms_system.ksdwrt(2,to_char(sysdate)|| ' -- The message ');
1
ответ дан 18 December 2019 в 08:31
поделиться

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

Править: Вот процедура в качестве примера:

procedure pDebug( str in varchar2 )
-- output debugging message to display or tcp console
   is
x number;
l number;
nPort number;
sAddress varchar2(5000);
  begin
if c_bDebug = 1 then
    if c_tcpbDebug = 1 then
        if cSocket.remote_host is NULL then
            nPort := strMetaDataValue( 'TCP-DEBUG-PORT' );
            sAddress := strMetaDataValue( 'TCP-DEBUG-ADDRESS' );
            dbms_output.put_line( 'tcp:port ' || nPort );
            dbms_output.put_line( 'tcp:address ' || sAddress );
            if length( sAddress ) > 1 and nvl( nPort, 0 ) > 0 then
                begin
                dbms_output.put_line( 'tcp:open start ' ||to_char( SYSDATE, 'DD-MON-YYYY HH24:MI:SS' ) );
                cSocket := utl_tcp.open_connection( sAddress, nPort ); -- open connection
                dbms_output.put_line( 'tcp:open ' || to_char( SYSDATE, 'DD-MON-YYYY HH24:MI:SS' ) );
                c_tcpbDebug := 1;
                exception
                    when others then
                        dbms_output.put_line( SQLERRM );
                        dbms_output.put_line( 'Cant open debug tcp session ' || SYSTIMESTAMp );
                        c_tcpbDebug := 0;
                end;
            else
                c_tcpbDebug := 0;
            end if;
        end if;         

        if cSocket.remote_host is not NULL then
            dbms_output.put_line( 'tcp:write' );
            x := utl_tcp.write_line( cSocket, to_char( SYSDATE, 'DD-MON-YYYY HH24:MI:SS' ) || ' ' || str );
            x := utl_tcp.write_line( cSocket, utl_tcp.crlf );
        end if;
    end if;
-- this bit prints out the debug statement in 254 char bits
    l := length( str );
    x := 1;
    while x <= l loop
        dbms_output.put_line( substr( str,x,254 ) );
        x := x + 254;
    end loop;
end if;
end pDebug;
2
ответ дан 18 December 2019 в 08:31
поделиться

ВСТАВКА является фантастической альтернативой. Мало того, что Вы вытаскиваете информацию из своего процесса, она сохраняется для дальнейшего использования или анализ. И результаты могут быть получены и фильтрованы и обработаны с очень общим языком под названием SQL. У Вас мог быть столбец со значением по умолчанию sysdate для проверки времени и порядка. Это может быть помещено в автономной транзакции, чтобы не терять вход из-за отката.

2
ответ дан 18 December 2019 в 08:31
поделиться

Один limitiation dbms_output - то, что вывод становится доступным только после того, как оператор закончился. Для отслеживания длительные процессы, я использую dbms_pipe для отосланных сообщений о состоянии. На другом конце канала можно затем видеть то, что составил процесс.

1
ответ дан 18 December 2019 в 08:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: