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:
Y el código que estoy migrando a mysql es este:
Les agradezco su ayuda
Gracias
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


0