Смотрите здесь, где вы говорите:
AttachList => v_est_proc_name || '_EST_PROC.csv', v_prd_segs || '_PRD_SEGS.csv',
Битвыделено жирным шрифтом и рассматривается как отдельный аргумент для mail.send_mail.send (), но перед ним нет имени аргумента, как это делают все остальные аргументы, поэтому оракул не знает, для какого аргумента он предназначен
Укажите имя аргумента, которым должны быть эти данные.Если вы пытаетесь отправить несколько вложений, я думаю, что это должна быть строка, разделенная запятыми, но ваша запятая находится вне какой-либо строки, и оракул думает, что это запятая, которая разделяет список аргументов функции (два аргумента)
Попробуйте что-то вроде:
AttachList=> v_est_proc_name||'_EST_PROC.csv,'||v_prd_segs||'_PRD_SEGS.csv',
Это ставит запятую, разделяющую имена файлов внутри строки
Ошибка в основном означает «вы можете смешивать только позиционные аргументы и именованные аргументы, если вы поместите позиционные аргументысначала затем переключитесь на имя "
Для функции:
F(a, b, c)
--these are ok
F(1,2,3). --positional arguments go in order
F(c=> 3, b=> 2, a=> 1) --named arguments any order
F(1. c=> 3, b=> 2) --mixed, a is 1 in order, other two are any order
--going back to using positional after you started using names is not ok
F(b=> 2, 1, 3)
В последнем примере это ошибка, потому что oracle не может самостоятельно решить, является ли A 1 или 3 (и, следовательно, C является3 или 1)
Редактировать:
ОК, возможно, я слишком долго работал с SQLS и забыл свой Oracle.Если вы утверждаете, что вы не можете связать значения concat вместе для аргумента (то есть вы должны сначала сохранить их в переменной), почему бы не попробовать это:
SELECT tablename||'_EST_PROC.csv,' into v_est_proc_name
FROM blah_blah
WHERE
CREATED_AT = (select MAX(CREATED_AT) from blah);
SELECT v_est_proc_name||tablename||'_PRD_SEGS.csv' into v_est_proc_name
FROM blah_blah
WHERE
CREATED_AT = (select MAX(CREATED_AT) from blah);
mail.send_mail.send(
ToList=> v_tomail,
Subject=> 'see attachments',
Body=> 'Please action the attached files for this request.',
FromEmail=> 'donotreply@mail.com',
FromHost=> 'host',
SMTPServer=> 'host',
AttachList=> v_est_proc_name,
Возможно, вы могли бы также рассмотреть больший размердля строки (40 немного меньше?) и лучшего имени.Я пытался проверить это, но у меня нет живого экземпляра Oracle, и я не добился успеха в том, чтобы заставить различные сайты-скрипки создавать функции ..