我试图在过程中使用游标时写一个更新电子邮件域的过程(例如:将[email protected]转换为[email protected])
create of replace procedure pr_update_email
(Old_Email Varchar2, New_Email Varchar2)
As
V_OldDomain Varchar2(50);
Cursor C_Domains IS Select Email_Address
From Customer
where Email_Address Like '%@'||Old_Email;
Begin
Open C_Domains;
Fetch C_Domains INTO V_OldDomain;
While C_Domains %Found loop
Update Customer
Set Email_Address = Replace(Email_Address, Substr(Email_Address, Instr(Email_Address) + 1), New_Email)
WHERE Email_Address LIKE V_OldDomain;
Fetch C_Domains into New_Email;
End Loop;
Close C_Domains;
End pr_update_email;
/
Show Errors;
得到错误:19/11 PL / SQL:忽略了SQL语句
19/32 PLS-00403:表达式'NEW_EMAIL'不能用作对象的INTO目标SELECT / FETCH语句
cursor
?可以使用简单的update
语句进行处理。