oracle sql cursor 使用邮件域名更新邮件域名

Posted

技术标签:

【中文标题】oracle sql cursor 使用邮件域名更新邮件域名【英文标题】:oracle sql cursor update an email domain name using an email domain name 【发布时间】:2020-02-20 00:41:09 【问题描述】:

我想给一个域名换一个新的域名。该过程将传递两个字符串。 不使用主键但使用电子邮件 执行程序('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】:

您的程序应如下所示:

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;
/

干杯!!

【讨论】:

以及如何确保所有变体(大写或小写) 尝试学习,上下函数。您将能够在此解决方案中添加该功能

以上是关于oracle sql cursor 使用邮件域名更新邮件域名的主要内容,如果未能解决你的问题,请参考以下文章

oracle cursor open-for-using给出错误的结果

Oracle执行超长SQL的存储过程问题

oracle 存储过程表权限. A用户可以查B.table C.table 在A用户中存储过程中定义游标V_Cursor

Oracle参数之cursor_sharing

用于检查特定电子邮件域名的 Oracle 函数

[ORACLE]自适应游标共享Adaptive Cursor Sharing