My system was done in T-SQL and now I'm trying to convert it to MySQL, since MySQL does not have Table variable, how can it be changed? I don't know if a should use a temp Table or a cursor, my searches told me that I shpuld avoid cursors since there's always a better set treatment instead of looping over all the rows.
ALTER TRIGGER [dbo].[COLETA]
ON [dbo].[AquanetColetaDados]
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @CURSOR TABLE
(
ROWID INT NOT NULL PRIMARY KEY IDENTITY(1,1),
ID BIGINT,
DATAREGISTRO DATETIME,
VALOR FLOAT,
COD_PONTO INT,
COD_ESTACAO INT,
TP_PT INT,
QTDEDIASHIST INT,
FUSO INT
)
INSERT INTO @CURSOR
(
ID,
DATAREGISTRO,
VALOR,
COD_PONTO,
COD_ESTACAO,
TP_PT,
QTDEDIASHIST,
FUSO
)
SELECT
I.ID,
I.DATAREGISTRO,
CASE AD.COLUNA
WHEN 2 THEN I.COLUNA1
WHEN 3 THEN I.COLUNA2
WHEN 4 THEN I.COLUNA3
WHEN 5 THEN I.COLUNA4
WHEN 6 THEN I.COLUNA5
WHEN 7 THEN I.COLUNA6
WHEN 8 THEN I.COLUNA7
WHEN 9 THEN I.COLUNA8
WHEN 10 THEN I.COLUNA9
WHEN 11 THEN I.COLUNA10
END AS VALOR,
AD.COD_PONTO_COLETA,
I.CODESTACAO,
P.TP_PT,
ISNULL(P.QTDE_DIAS_HIST,0),
U.FUSO_NORMAL
FROM INSERTED I
INNER JOIN AQUASAVE.DBO.ARQUIVO_COLETOR A
ON A.CODIGO=I.CODESTACAO
INNER JOIN AQUASAVE.DBO.ARQ_COLET_DET AD
ON AD.COD_ARQUIVO=I.CODESTACAO
INNER JOIN AQUASAVE.DBO.PONTO_COLETA P
ON P.COD_PON_COL = AD.COD_PONTO_COLETA
INNER JOIN AQUANET.DBO.FLAG_ALARM F
ON F.FLAG_SUSPENDE_COLETA=0
INNER JOIN [AQUASAVE].[DBO].UF U
ON U.CODIGO = A.UF
WHERE A.FLAG_SUSPENDE_LEITURA=0
AND P.STATUS=1
AND P.FLAG_PRI_LEITURA=0
AND P.FLAG_SUSPENDE_COLETA_PONTO=0
ORDER BY I.DATAREGISTRO,AD.COD_PONTO_COLETA
END