2009-11-05 3 views
1

У меня есть оператор PL/SQL, который использует EXECUTE IMMEDIATE для выполнения запроса. Тем не менее, мне трудно понять, как получить текст запроса, который выполняется. Я не могу использовать dbms_output, так как запрос превышает 255 символов. Есть ли способ сделать sqlplus эхом строку, которая была передана в EXECUTE IMMEDIATE?Как отлаживать Oracle dynamic sql в sqlplus?

ответ

3

Какую версию Oracle вы используете? 255 - длина линии по умолчанию для DBMS_OUTPUT.PUT_LINE().. До 10 г мы могли отображать 1048 символов за один раз. С тех пор это 32K.

Также вы можете использовать IDE, поддерживающую DBMS_DEBUG. Например, SQL Developer делает это, и он свободен от Oracle. Find out more.

+1

Хммм ... Возможно, я искал устаревшую информацию. Я полагаю, это означает, что ничего не исполнилось, когда я думал, что это так. : - / –

0

Вы можете попытаться подключить профилировщик к базе данных (честно говоря, я сделал это только для SqlServer) и запустить процедуру, так как профилировщик покажет любой запрос, сделанный в БД, вы сможете забрать его там и сделать необходимая отладка. Надеюсь, что это поможет.

0

Как печатать большие строки по N символов за раз. Изменить в соответствии с вашими потребностями.

FOR i IN 0..10 LOOP 
    dbms_output.put_line(substr(my_very_long_string,i*100+1,100)); 
END LOOP; 
0

Вы можете вставить строку в журнал/временную таблицу и изучить ее.