У меня есть оператор PL/SQL, который использует EXECUTE IMMEDIATE
для выполнения запроса. Тем не менее, мне трудно понять, как получить текст запроса, который выполняется. Я не могу использовать dbms_output
, так как запрос превышает 255 символов. Есть ли способ сделать sqlplus эхом строку, которая была передана в EXECUTE IMMEDIATE
?Как отлаживать Oracle dynamic sql в sqlplus?
1
A
ответ
3
Какую версию Oracle вы используете? 255 - длина линии по умолчанию для DBMS_OUTPUT.PUT_LINE().
. До 10 г мы могли отображать 1048 символов за один раз. С тех пор это 32K.
Также вы можете использовать IDE, поддерживающую DBMS_DEBUG. Например, SQL Developer делает это, и он свободен от Oracle. Find out more.
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
Вы можете вставить строку в журнал/временную таблицу и изучить ее.
Хммм ... Возможно, я искал устаревшую информацию. Я полагаю, это означает, что ничего не исполнилось, когда я думал, что это так. : - / –