Я пытаюсь заменить окончание любого электронного письма определенным почтовым доменом. В процедуре будет передано две строки: во-первых, это исходное имя домена, которое должно быть заменено;и Второе новое доменное имя, которое будет заменять оригинальное (в этом порядке).Например, если процедуре передаются строки «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;
я получаю ошибки:
LINE/ COL ERROR
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
Спасибо!