oracle sql курсор обновляет имя домена электронной почты, используя имя домена электронной почты - PullRequest
0 голосов
/ 20 февраля 2020

Я хочу дать доменное имя для изменения на новое доменное имя. процедура пройдет две строки. не используя первичный ключ, но используя процедуру выполнения электронной почты («gmail.com», «hotmail.com»);

все письма с «Gmail.com» в базе данных изменят имя нового домена с 'Hotmail.com. и вот мой код.

У меня ошибка с «неправильным номером или типом аргументов при вызове PR_Q3»

create procedure PR_Q3
is P_NewEamil varchar2(50); P_OldEmail varchar2(50);
cursor E_info is select Email_Address from Broker where P_OldEmail = Email_Address
for update of Email_Address;
begin 
open E_info;
fetch E_info into P_NewEamil;
while E_info%found loop 
if(P_NewEamil like '%.com') then 
update Broker set Email_Address = P_NewEamil where Email_Address= P_OldEmail;
else 

 end if;
end loop;
close E_info;

 end PR_Q3;

1 Ответ

0 голосов
/ 20 февраля 2020

Ваша процедура должна выглядеть следующим образом:

create procedure PR_Q3(p_oldemail in varchar2,
                       p_newemail in varchar2)
As
Begin

UPDATE BROKER
SET
    EMAIL_ADDRESS = REPLACE(EMAIL_ADDRESS, p_oldemail, p_newemail)
WHERE
    REGEXP_LIKE ( EMAIL_ADDRESS,'.*@'|| p_oldemail|| '$' );

Commit;

End;
/

Для вызова этой процедуры вам необходимо передать оба домена следующим образом:

Begin
Pr_q3('gmail.com', 'hotmail.com');
End;
/

Cheers !!

...