【发布时间】:2019-03-03 20:36:57
【问题描述】:
我正在尝试用特定的电子邮件域替换任何电子邮件的结尾。该过程将传递两个字符串:第一个是要替换的原始域名;第二个是要替换的原始域名;其次是将替换原始域名的新域名(按此顺序)。例如,如果向过程传递字符串“sadme.com”和“happyme.com”,则数据库中以“sadme.com”为域名的每封电子邮件都将更改为“happyme.com”作为其域名。域名
例子:
Before After
-------------------------- ---------------------------
ExampleEmail@yahoo.com ExampleEmail@gmail.com
SecondExample@hotmail.com SecondExample@gmail.com
这是我所拥有的,但我遇到了错误
Create Procedure PR_Q3
(P_OldDomain Varchar2,P_NewDomain Varchar2)
As
Cursor C_Domains IS Select Email_Address
From Broker
where Email_Address = '%@'||P_OldDomain;
V_OldDomain Varchar2(50);
Begin
Open C_Domains;
Fetch C_Domains INTO V_OldDomain;
While C_Domains%Found loop
if C_Domains = '%@'||P_OldDomain Then
Update Broker
Set Email_Address = P_NewDomain
Where Email_Address = V_OldDomain;
End if;
Fetch C_Domains into P_NewDomain;
End Loop;
Close C_Domains;
End PR_Q3;
/
Show Errors;
我得到了错误:
行/列错误
2/29 PLS-00103:在预期以下情况之一时遇到符号“(”:
:= . ) , @ % default character
The symbol ":=" was substituted for "(" to continue.
2/61 PLS-00103:在预期以下情况之一时遇到符号“(”:
:= . ) , @ % default character
The symbol ":=" was substituted for "(" to continue.
我还尝试取出 varchar2(50) 并放入 Varchar2,它给了我错误:
PLS-00403: expression 'P_NewDomain' cannot be used as an INTO-target of a SELECT/FETCH statement
谢谢!
【问题讨论】:
标签: regex oracle plsql oracle10g plsqldeveloper