电子邮件游标程序
Procedure with Cursor for E-Mail
我有一个 table,里面有以下东西:
Name E-Mail
Trump, Donald Null
现在我必须用游标做一个过程,用那个人的名字创建一封电子邮件。
f.e。 donald.trump@usa.com
,也应该更新电子邮件 table。
我该怎么做?
假设您正在使用 SQL 服务器
select CONCAT (SUBSTRING(name, CHARINDEX(',', name) + 1, LEN(name)) , '.' , LEFT(name, CHARINDEX(',', name) - 1) , '@usa.com') from
(
select 'Trump, Donald' as name
) tab
请检查根据您的要求创建的示例。
CREATE PROCEDURE [NameProcedure]
AS
BEGIN
DECLARE @table AS TABLE
(
Name NVARCHAR(200),
Email NVARCHAR(200) NULL
)
INSERT INTO @table(Name) VALUES('Trump, Donald'),('barack, obama')
DECLARE
@nameemail NVARCHAR(20)
DECLARE cursor_procedure CURSOR
FOR SELECT
REPLACE(Name,',','') AS Name
FROM
(
SELECT CONCAT(LEFT(Name,CHARINDEX(',',Name)),'.',RIGHT(Name,CHARINDEX(',',Name)),'@usa.com') Name
FROM @table
) AS Result
OPEN cursor_procedure;
FETCH NEXT FROM cursor_procedure INTO
@nameemail
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @nameemail AS Name
FETCH NEXT FROM cursor_procedure INTO
@nameemail
END;
CLOSE cursor_procedure;
DEALLOCATE cursor_procedure;
END
-- Run the store procedure
EXEC [NameProcedure]
Output
游标相关的可以看这篇
https://www.sqlservertutorial.net/sql-server-stored-procedures/sql-server-cursor/
我有一个 table,里面有以下东西:
Name E-Mail
Trump, Donald Null
现在我必须用游标做一个过程,用那个人的名字创建一封电子邮件。
f.e。 donald.trump@usa.com
,也应该更新电子邮件 table。
我该怎么做?
假设您正在使用 SQL 服务器
select CONCAT (SUBSTRING(name, CHARINDEX(',', name) + 1, LEN(name)) , '.' , LEFT(name, CHARINDEX(',', name) - 1) , '@usa.com') from
(
select 'Trump, Donald' as name
) tab
请检查根据您的要求创建的示例。
CREATE PROCEDURE [NameProcedure]
AS
BEGIN
DECLARE @table AS TABLE
(
Name NVARCHAR(200),
Email NVARCHAR(200) NULL
)
INSERT INTO @table(Name) VALUES('Trump, Donald'),('barack, obama')
DECLARE
@nameemail NVARCHAR(20)
DECLARE cursor_procedure CURSOR
FOR SELECT
REPLACE(Name,',','') AS Name
FROM
(
SELECT CONCAT(LEFT(Name,CHARINDEX(',',Name)),'.',RIGHT(Name,CHARINDEX(',',Name)),'@usa.com') Name
FROM @table
) AS Result
OPEN cursor_procedure;
FETCH NEXT FROM cursor_procedure INTO
@nameemail
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @nameemail AS Name
FETCH NEXT FROM cursor_procedure INTO
@nameemail
END;
CLOSE cursor_procedure;
DEALLOCATE cursor_procedure;
END
-- Run the store procedure
EXEC [NameProcedure]
Output
游标相关的可以看这篇
https://www.sqlservertutorial.net/sql-server-stored-procedures/sql-server-cursor/