Pesquisar na Comunidade
Mostrando resultados para as tags ''stored procedure''.
Encontrado 2 registros
-
Estou finalizando um sistema aqui e estou com dificuldades para criar um Trigger ou até mesmo uma Stored Procedure, não sei qual a forma mais correta ou indicada nesse caso. Tenho uma tabela chamada <vendas> que armazena os dados de uma venda. CREATE TABLE IF NOT EXISTS `gfinan`.`vendas` ( `id_venda` INT NOT NULL AUTO_INCREMENT, `cpf` CHAR(11) NOT NULL, `placa` CHAR(7) NOT NULL, `id_pagamento` INT NOT NULL, `valor` DECIMAL(10,2) NOT NULL, `parcelas` INT NOT NULL, `data` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `cnpj` CHAR(14) NOT NULL, `id_usuario` INT NOT NULL, `status` CHAR(1) NOT NULL DEFAULT 'A', PRIMARY KEY (`id_venda`), INDEX `fk_vendas_veiculos_idx` (`placa` ASC), INDEX `fk_vendas_usuarios_idx` (`id_usuario` ASC), INDEX `fk_vendas_clientes_idx` (`cpf` ASC), INDEX `fk_vendas_empresas_idx` (`cnpj` ASC), INDEX `fk_vendas_pagamentos_idx` (`id_pagamento` ASC), ENGINE = InnoDB O campo <id_pagamento> identifica a forma de pagamento em uma venda, sendo a vista ou através de notas promissórias. Quando for informado por exemplo o valor total de R$30.000,00 pagos em 12 notas promissórias, ao gravar os dados na tabela <vendas>, preciso que o banco insira na tabela <promissorias> 12 registros contendo, as datas de pagamentos, o numero da nota promissória e o valor de cada uma delas com base nos dados gravados na tabela anterior. A estrutura da tabela <promissorias> é essa: CREATE TABLE IF NOT EXISTS `picinin`.`promissorias` ( `id_promissoria` INT NOT NULL AUTO_INCREMENT, `vencimento` DATETIME NOT NULL, `numeracao` INT NOT NULL, `valor` DECIMAL(10,2) NOT NULL, `emissao` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `id_venda` INT NOT NULL, `status` CHAR(1) NOT NULL DEFAULT 'E', PRIMARY KEY (`id_promissoria`), INDEX `fk_promissorias_vendas1_idx` (`id_venda` ASC), ENGINE = InnoDB Preciso também que esses dados seja excluídos caso a venda seja cancelada. Nunca precisei fazer algo assim e estou com muita dificuldade, podem me orientar?
- 2 respostas
-
Boa noite. Sou estudante e estou fazendo um trabalho para a faculdade em delphi 2010 utilizando o mysql e preciso fazer relatorios. Preciso criar varios tipos de filtros no formulario delphi, como por exemplo, forma de pagamento, vendas canceladas, finalizadas, usuarios, data. O problema e que se o usuario deixar esses filtos em branco devo buscar tudo de venda do banco, com o componente query programando sql no formulaario eu sei fazer mas com TZStored Procedure do zeos separando sql da aplicação, deixando sql no banco, não, pois quando passo algum campo nulo a consulta fica toda em branco, fica então a questao o que devo passar?? Segue abaixo o codigo. CREATE PROCEDURE `relatorioVenda`(IN oDs_FormaPagamento VARCHAR(50), IN oDs_Status CHAR(1), IN oid_Usuario VARCHAR(10), IN oDtI DATE, IN oDtF DATE) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' BEGIN SELECT a.*, b.Ds_FormaPagamento, c.Ds_Login, d.No_Cliente_Rz FROM tb_venda a INNER JOIN tb_formapagamento b ON (a.id_FormaPagamento = b.id_FormaPagamento) INNER JOIN tb_usuario c ON (a.id_Usuario = c.id_Usuario) INNER JOIN tb_cliente d ON (a.id_Cliente = d.id_Cliente) WHERE b.Ds_FormaPagamento = oDs_FormaPagamento AND a.Ds_Status = oDs_Status AND a.id_Usuario = oid_Usuario AND (a.Dt_Venda >= oDtI AND a.Dt_Venda <= oDtF) ORDER BY a.id_Venda; END;