小编Jay*_*Jay的帖子

使用游标如果存在则更新,如果不存在则插入

我正在尝试写一个游标。我创建了一个表,用于从 sys.dm_exec_sessions 捕获登录名和时间。现在,我需要编写一个游标,以便在登录名已存在的情况下将登录时间更新为上次登录时间,并在表中不存在登录名的情况下插入一行。我想出了以下方法,但不幸的是,我收到一个错误,子查询返回多个值。有任何想法吗???

declare @log as varchar(200)
declare @log_time as datetime
declare LoginsSize cursor for
        SELECT  login_name, login_time
        FROM sys.dm_exec_sessions 
open LoginsSize
            fetch next from LoginsSize into @log, @log_time
            while( @@fetch_status = 0)
        begin                                                           
          If (Select Login from [dbo].[LoginsForDBUserList])  = @log 

             Begin
             UPDATE  [dbo].[LoginsForDBUserList]
             SET     LastLoginTime = @log_time
             WHERE   [login]= @log
             END

             Else 

             Begin
             Insert Into [dbo].[LoginsForDBUserList]
             SELECT  login_name, login_time
             FROM sys.dm_exec_sessions
             END

        fetch next from LoginsSize into @log, @log_time
        close LoginsSize
        deallocate LoginsSize

end
Run Code Online (Sandbox Code Playgroud)

sql-server cursors

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

cursors ×1

sql-server ×1