电子邮件游标程序

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/