Вы передаете аргументы в кавычках внутри строки.Вам нужно либо избежать этих внутренних кавычек:
data_dump(query_in => 'select * from reservation where type not in (''H'',''PURGE'',''E'') ',
file_in => 'export_'||months_from||''||months_to||'.csv',
directory_in => 'C:\Users\Administrator\Desktop\test',
delimiter_in => '|' );
Или использовать альтернативный механизм цитирования :
data_dump(query_in => q'[select * from reservation where type not in ('H','PURGE','E') ]',
...
Со своим «другим» значением вынужно по-прежнему включать это в свои собственные escape-кавычки:
data_dump(query_in => 'select * from reservation where type not in (''H'',''PURGE'',''E'','''|| other ||''')',
...
или (возможно, становится менее читаемым сейчас):
data_dump(query_in => q'[select * from reservation where type not in ('H','PURGE','E',']' || other || q'[')]',
...
Вы можете использовать dbms_output
для отладки такого роданапечатать сгенерированный аргумент и посмотреть, совпадает ли это с тем, что вы запускали вручную.
С вашим третьим частичным кодом вы поместили закрывающие одинарные кавычки после (предположительно числовых) переменных:
(trunc(a.update_date) between (select add_months(TRUNC(SYSDATE), -(]'|| months_from ||q'[') ) from dual) and (select add_months(TRUNC(SYSDATE), -(]'|| months_to ||q'[') from dual))]'
^ ^
и, как говорится в сообщении, вам не хватает закрывающей скобки во втором вызове add_month
;так и должно быть (где ...
- остальная часть оператора, который вы не показали):
q'[ ... (trunc(a.update_date) between (select add_months(TRUNC(SYSDATE), -(]'
|| months_from ||q'[) ) from dual) and (select add_months(TRUNC(SYSDATE), -(]'
|| months_to ||q'[) ) from dual))]'
Опять же, это базовая отладка, которую вы можете выполнить, распечатав сгенерированный оператор и проверив его илипытаясь запустить его вручную.
Также вам не нужны внутренние данные select from dual
или все скобки;Вы можете просто сделать:
q'[ ... trunc(a.update_date) between add_months(TRUNC(SYSDATE), -]'
|| months_from ||q'[) and add_months(TRUNC(SYSDATE), -]'|| months_to ||q'[)]'