Ir para conteúdo
Fórum Script Brasil

carlos rogerio

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre carlos rogerio

carlos rogerio's Achievements

0

Reputação

  1. Boa Noite, sou iniciante em mysql, mas tenho grande conhecimento em Sql server, nele crie uma trigger com cursor que é disparado quando insiro ou deleto uma informação, porem tive que recriar em formato mysql para uma determinada empresa porem quando executo essa trigger da um erro fatal e para o servidor. poderiam avaliar o meu script e mim dizer onde estar o erro. Em sql server esta funcionando normalmente. --------------------------------------------------------------------------------- DECLARE @ID_Nota INT, @ID_Nota2 INT, @ID_Produto INT, @PonteiroRegistro INT = 0, @Movimenta_Saldo BIT, @PonteiroIndicador INT, @Tipo_Movimento CHAR(1), @Quantidade_Movimentar NUMERIC(15,3), @Ponteiro INT; -- Atualizar Estoque ( Inserted ) DECLARE C_Notas2_Saldo CURSOR FOR SELECT ID_Nota, ID_Nota2, ID_Produto, Quantidade_Movimentar FROM INSERTED; OPEN C_Notas2_Saldo; FETCH NEXT FROM C_Notas2_Saldo INTO @ID_Nota, @ID_Nota2, @ID_Produto, @Quantidade_Movimentar; WHILE @@FETCH_STATUS = 0 BEGIN SET @Tipo_Movimento = (SELECT TOP 1 RTRIM(Tipo_Movimento) AS Tipo_Movimento FROM notas WHERE Notas.ID_Nota = @ID_Nota); IF @Tipo_Movimento = 'S' BEGIN SET @Quantidade_Movimentar = ISNULL(@Quantidade_Movimentar,0) * -1; END SET @PonteiroRegistro = ( SELECT COUNT(1) AS qtd FROM estoque WHERE ID_Produto = @ID_Produto ) IF ( @PonteiroRegistro = 0 ) BEGIN INSERT INTO `nfe`.`estoque`( `ID_Produto`, `Quantidade` ) VALUES ( @ID_Produto, @Quantidade_Movimentar ) END ELSE BEGIN UPDATE `nfe`.`estoque` SET `Quantidade` = Quantidade + @Quantidade_Movimentar WHERE ID_Produto = @ID_Produto END FETCH NEXT FROM C_Notas2_Saldo INTO @ID_Nota, @ID_Nota2, @ID_Produto, @Quantidade_Movimentar; END CLOSE C_Notas2_Saldo; DEALLOCATE C_Notas2_Saldo; --Atualizar Estoque ( Deleted ) DECLARE C_Notas2_Saldo CURSOR FOR SELECT ID_Nota, ID_Nota2, ID_Produto, Quantidade_Movimentar FROM DELETED; OPEN C_Notas2_Saldo; FETCH NEXT FROM C_Notas2_Saldo INTO @ID_Nota, @ID_Nota2, @ID_Produto, @Quantidade_Movimentar; WHILE @@FETCH_STATUS = 0 BEGIN SET @Tipo_Movimento = (SELECT TOP 1 RTRIM(Tipo_Movimento) AS Tipo_Movimento FROM notas WHERE Notas.ID_Nota = @ID_Nota); IF @Tipo_Movimento = 'E' BEGIN SET @Quantidade_Movimentar = ISNULL(@Quantidade_Movimentar,0) * -1; END SET @PonteiroRegistro = ( SELECT COUNT(1) AS qtd FROM estoque WHERE ID_Produto = @ID_Produto) IF ( @PonteiroRegistro = 0 ) BEGIN INSERT INTO `nfe`.`estoque`( `ID_Produto`, `Quantidade` ) VALUES ( @ID_Produto, @Quantidade_Movimentar ) END ELSE BEGIN UPDATE `nfe`.`estoque` SET `Quantidade` = Quantidade + @Quantidade_Movimentar WHERE ID_Produto = @ID_Produto END FETCH NEXT FROM C_Notas2_Saldo INTO @ID_Nota, @ID_Nota2, @ID_Produto, @Quantidade_Movimentar; END CLOSE C_Notas2_Saldo; DEALLOCATE C_Notas2_Saldo; --------------------------------------------------------------------------- roger.21@ibest.com.br
×
×
  • Criar Novo...