2013-09-20 4 views
0

У меня есть следующий код, и мне было поручено изменить значение 'eFrom' от 'anonymous' до 'no-response'. Я понятия не имею, где хранится значение или как его найти. В настоящий момент процедура отправляет сообщение электронной почты, которое имеет значение отправителя '[email protected]'. Кто-нибудь знает, как я могу найти значение для 'eFrom' или какую таблицу он хранит? В настоящее время я использую Oracle SQL Developer.Поиск хранимой процедуры Oracle

create or replace PROCEDURE SEND_MAIL 
(eTo IN VARCHAR2, 
eFrom IN VARCHAR2, 
eCC IN varchar2, 
eSubject IN VARCHAR2, 
eMessage IN CLOB) AS 
BEGIN 
    execute immediate 'alter session set smtp_out_server = ' || chr(39) || 'mail.com' || chr(39); 
    UTL_MAIL.send(sender => eFrom, 
    recipients => eTo, 
    cc => eCC, 
    subject => eSubject, 
    message => eMessage, 
    mime_type => 'text/html; charset=utf-8'); 
END; 

ответ

2

eFrom не хранится нигде (по крайней мере, в коде, который вы опубликовали). Это параметр, который передается этой процедуре. Вам нужно будет перейти к тому, что код вызывает эту процедуру, чтобы увидеть, где этот код получает значение eFrom (может быть, конечно, это несколько мест, которые вызывают эту процедуру, каждая из которых получает значение из другого места). Этими местами могут быть другие блоки PL/SQL (в этом случае вы можете использовать dba_dependencies для их отслеживания. Но они также могут быть в коде, который работает за пределами базы данных, и в этом случае вам нужно будет вставить этот источник.

Если вы ищете другие хранимые объекты PL/SQL, которые призывают ваш SEND_MAIL процедуру

SELECT owner, name, type 
    FROM dba_dependencies 
WHERE referenced_name = 'SEND_MAIL' 
    AND referenced_owner = <<owner of procedure>> 

Если у вас нет доступа к dba_dependencies, вы можете быть в состоянии использовать all_dependencies или user_dependencies вместо предполагая, что у вас есть права по вызывающей процедуре или ее собственному.

Вы могли бы, конечно, изменить процедуру, чтобы просто переопределить значение eFrom, которое передано и передать жесткий код [email protected], но это вряд ли будет правильным. Вы также можете изменить код, чтобы переопределить значение eFrom, только если переданное значение равно [email protected], но, опять же, это вряд ли будет лучшим подходом.

+0

Звучит так же, как и то, что я ищу. Каким образом можно использовать 'dba_dependencies' для их отслеживания? Есть простой запрос? –

+0

@BenSloboda - Обновлен мой ответ. –

0

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

Возможно, вам придется ОБНОВИТЬ эту таблицу, чтобы изменить адрес eFrom.

Смежные вопросы