dbo.carga_users_new

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO

CREATE OR ALTER PROCEDURE dbo.carga_users_new
AS
BEGIN

 SET NOCOUNT ON

 DECLARE @p_cli_codigo int
 DECLARE @p_username   varchar(10)
 DECLARE @p_rand       int
    DECLARE @p_new_id   varchar(120)
 DECLARE @ok     char(1)
 
-- grabo todos los usuarios que tenemos el user_id en la tabla users
 insert into users_new (user_id, cookie_id, cli_codigo, username)
 select users.user_id, users.cookie_id,  
     users_11.cli_codigo, users_11.username 
     from users_11
     inner join users
     on users.cli_codigo = users_11.cli_codigo and LTRIM(RTRIM(LOWER(users.username))) = LTRIM(RTRIM(LOWER(users_11.username))) 

-- los que ya grabe los borro
 delete from users_11 
 where exists(select * from users_new 
      where cli_codigo = users_11.cli_codigo and username = users_11.username)

-- agrego los que no estaban
 DECLARE cursor_1 CURSOR FOR
         SELECT cli_codigo, username from users_11
 
 OPEN cursor_1
 FETCH cursor_1 INTO @p_cli_codigo, @p_username

  WHILE (@@FETCH_STATUS = 0)
  BEGIN
         set @ok = 'N'  
      WHILE (@ok = 'N')
   BEGIN
      set @p_rand = ROUND(((999999999 - 1) * RAND() + 1), 0)
      set @p_new_id = convert(varchar(120),newid())
         if (select count(*) from users where user_id = @p_rand or cookie_id = @p_new_id) = 0 
     begin 
       insert into users_new (user_id, cookie_id, cli_codigo, username) 
       values (@p_rand, @p_new_id, @p_cli_codigo, @p_username)
       set @ok = 'S'
     end
   END   
     
  
   FETCH cursor_1 INTO @p_cli_codigo, @p_username
     END

 CLOSE cursor_1
 DEALLOCATE cursor_1

-- cambio los cookie_id

 DECLARE cursor_2 CURSOR FOR
         SELECT cli_codigo, username from users_new

 OPEN cursor_2
 FETCH cursor_2 INTO @p_cli_codigo, @p_username

  WHILE (@@FETCH_STATUS = 0)
  BEGIN
         set @ok = 'N'  
      WHILE (@ok = 'N')
   BEGIN
      set @p_new_id = convert(varchar(120),newid())
         if (select count(*) from users where cookie_id = @p_new_id) = 0 
     begin 
       update users_new set cookie_id = @p_new_id 
       where cli_codigo = @p_cli_codigo
       and username = @p_username 
       set @ok = 'S'
     end
   END   
     
  
   FETCH cursor_2 INTO @p_cli_codigo, @p_username
     END

 CLOSE cursor_2
 DEALLOCATE cursor_2

-- los pongo todos activos
 update users_new set active_user = 'Y' 

END

GO

Depends On

2

Used By

No items found