Bases de Datos - Migrar un Procedimiento almacenado en Sql Server a MySq

 
Vista:
sin imagen de perfil
Val: 1
Ha disminuido su posición en 11 puestos en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Migrar un Procedimiento almacenado en Sql Server a MySq

Publicado por Luis (1 intervención) el 12/07/2018 05:31:32
Cordial saludo, tengo un procedimiento almacenado en sql server y lo quiero migrar a mysql pero no he obtenido resultados positivos envío el código sql server:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
USE [DEV_GESTION]
GO
 
/****** Object:  StoredProcedure [dbo].[DEL_EMPRESA]    Script Date: 11/07/2018 19:00:41 ******/
SET ANSI_NULLS ON
GO
 
SET QUOTED_IDENTIFIER ON
GO
 
-- =============================================
-- Author:		JCO
-- Create date: 9-Jun-2018
-- Description:	ELIMINAR PERMANENTEMENTE TODOS LOS DATOS DE UNA EMPRESA
 
-- *********************************************************************
-- ************ C   U   I  D  A  D  O !!!!!  SE PERDERÁN TODOS LOS DATOS
-- =============================================
 
CREATE PROCEDURE [dbo].[DEL_EMPRESA] (
				@p_email nvarchar(100) = '', @p_IdEmpresa bigint)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
 
    declare     @email   nvarchar(100);
    declare     @IdEmpresa bigint = 0
    declare     @IdUsuario bigint = 0
	declare     @IdUsuarioAdministrador bigint = 0
    declare     @AspNetUser_Id nvarchar(128) = ''
 
	set @email = @p_email;
 
	----- ********************* Validaciones iniciales ***********************
	Select @AspNetUser_Id = u.Id
	from AspNetUsers as u
	where Email = @email;
 
	if @AspNetUser_Id = '' or @AspNetUser_Id is null
	begin
	  select -1 as IdMsg, 'No existe un usuario para el EMail: ' + @AspNetUser_Id as Msg
	  return -1; -- No existe un usuario para el EMail
	end;
 
	-- Validar si la empresa existe, si no existe no continua el proceso
	SELECT @IdEmpresa = IdEmpresa , @IdUsuarioAdministrador = IdUsuarioAdministrador
	FROM Empresa where IdEmpresa = @p_IdEmpresa;
 
	IF @IdEmpresa =0 OR @IdEmpresa IS NULL
	BEGIN
	  select -2 as IdMsg, 'No existe La empresa definida para borrar'  as Msg
	  RETURN -2;
	END;
 
	--
	select @IdUsuario = IdUsuario from dbo.Usuario where IdEmpresa = @IdEmpresa and email = @email;
 
	if @IdUsuario <> @IdUsuarioAdministrador
	Begin
	  select -3 as IdMsg, 'Usuario que elimina la empresa no es el mismo administrador'  as Msg
	  RETURN -3;
	End;
 
 
  BEGIN TRAN Transaccion
 
	  DELETE FROM DBO.TAREAACCION
	  WHERE IDTAREA IN
	   (
	     SELECT IDTAREA FROM TAREA WHERE IdEmpresa = @IdEmpresa
	   );
 
	 DELETE FROM TAREA WHERE IdEmpresa = @IdEmpresa;
 
 
	  DELETE FROM dbo.EquipoUsuario
	  WHERE IdEquipo IN
	   (
	   SELECT IdEquipo FROM Equipo
	   WHERE IdEmpresa = @IdEmpresa
	   );
 
	   DELETE FROM Equipo
	   WHERE IdEmpresa = @IdEmpresa;
 
	   DELETE FROM dbo.Usuario
	   WHERE IdEmpresa = @IdEmpresa;
 
	   DELETE FROM dbo.Tipo
	   WHERE IdEmpresa = @IdEmpresa;
 
       DELETE FROM dbo.Estado
	   WHERE IdEmpresa = @IdEmpresa;
 
       DELETE FROM dbo.Activo
	   WHERE IdEmpresa = @IdEmpresa;
 
       DELETE FROM dbo.[Empresa]
	   WHERE IdEmpresa = @IdEmpresa;
 
    COMMIT TRAN Transaccion
    select 1 as IdMsg, 'Proceso ejecutado correctamente'  as Msg
    RETURN 0
 
-- RollBack
UNDO:
      ROLLBACK TRAN Transaccion
	  select -99 as IdMsg, 'Proceso  en falla RollBAck'  as Msg
      RETURN -99
 
END
GO


Y el código que estoy migrando a mysql es este:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
DELIMITER $$
 
DROP PROCEDURE IF EXISTS DEL_EMPRESA $$
CREATE PROCEDURE DEL_EMPRESA (
	IN p_email varchar(100) = '', p_IdEmpresa bigint
	)
AS
BEGIN
declare     email   varchar(100);
declare     IdEmpresa bigint = 0
declare     IdUsuario bigint = 0
declare     IdUsuarioAdministrador bigint = 0
declare     AspNetUser_Id varchar(128) = ''
 
set @email = @p_email;
 
----- ********************* Validaciones iniciales ***********************
Select @AspNetUser_Id = u.Id
from AspNetUsers as u
where Email = @email;
 
if @AspNetUser_Id = '' or @AspNetUser_Id is null
begin
select -1 as IdMsg, 'No existe un usuario para el EMail: ' + @AspNetUser_Id as Msg
return -1; -- No existe un usuario para el EMail
end;
 
-- Validar si la empresa existe, si no existe no continua el proceso
 
SELECT @IdEmpresa = IdEmpresa , @IdUsuarioAdministrador = IdUsuarioAdministrador
FROM Empresa where IdEmpresa = @p_IdEmpresa;
 
IF @IdEmpresa =0 OR @IdEmpresa IS NULL
BEGIN
select -2 as IdMsg, 'No existe La empresa definida para borrar'  as Msg
RETURN -2;
END;
 
--
select @IdUsuario = IdUsuario from dbo.Usuario where IdEmpresa = @IdEmpresa and email = @email;
 
if @IdUsuario <> @IdUsuarioAdministrador
Begin
select -3 as IdMsg, 'Usuario que elimina la empresa no es el mismo administrador'  as Msg
RETURN -3;
End;
 
 
BEGIN TRAN Transaccion
 
DELETE FROM DBO.TAREAACCION
	  WHERE IDTAREA IN
	   (
	     SELECT IDTAREA FROM TAREA WHERE IdEmpresa = @IdEmpresa
	   );
 
	 DELETE FROM TAREA WHERE IdEmpresa = @IdEmpresa;
 
 
	  DELETE FROM dbo.EquipoUsuario
	  WHERE IdEquipo IN
	   (
	   SELECT IdEquipo FROM Equipo
	   WHERE IdEmpresa = @IdEmpresa
	   );
 
	   DELETE FROM Equipo
	   WHERE IdEmpresa = @IdEmpresa;
 
	   DELETE FROM Usuario
	   WHERE IdEmpresa = @IdEmpresa;
 
	   DELETE FROM Tipo
	   WHERE IdEmpresa = @IdEmpresa;
 
       DELETE FROM Estado
	   WHERE IdEmpresa = @IdEmpresa;
 
       DELETE FROM Activo
	   WHERE IdEmpresa = @IdEmpresa;
 
       DELETE FROM Empresa
	   WHERE IdEmpresa = @IdEmpresa;
 
    COMMIT TRAN Transaccion
    select 1 as IdMsg, 'Proceso ejecutado correctamente'  as Msg
    RETURN 0
 
$$

Les agradezco su ayuda
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder