Você está aqui: MySQL ::: Dicas & Truques ::: Stored Procedures (procedimentos armazenados), Functions (funções) e Triggers (gatilhos) |
Como criar uma stored procedure do tipo FUNCTION usando o MySQL Query BrowserQuantidade de visualizações: 6470 vezes |
O MySQL Query Browser é uma ferramenta de interface gráfica fornecida gratuitamente pela MySQL AB (os mesmos fabricantes do MySQL) e está disponível para Windows, Linux e Mac OS. Esta ferramenta nos permite criar e manipular bases de dados e tabelas no MySQL de forma visual, melhorando a produtividade. Se você ainda não conhece esta ferramenta e gostaria de saber como instalá-la, veja como fazê-lo na seção MySQL do site. O MySQL Query Browser também pode ser usado para a criação de stored procedures (funções e procedimentos que são embutidos em uma determinada base de dados). Nesta dica eu mostro como criar uma stored procedure do tipo FUNCTION. Uma stored procedure do tipo FUNCTION retorna um único valor e pode ser chamada dentro de qualquer instrução SQL, por exemplo, SELECT, UPDATE, INSERT, etc. Siga os seguintes passos para criar uma stored procedure do tipo FUNCTION no MySQL Query Browser (para esta dica eu usei a versão 1.2.12): a) Se você ainda não o fez, abra o MySQL Query Browser e escolha a base de dados desejada. Isso pode ser feito no menu Arquivo -> Change Default Schema. Em seguida selecione a base de dados e clique no botão OK. b) Vá no menu Script -> Create Stored Procedure / Function. Informe o nome para a função. Neste exemplo vamos usar o nome "somar". Clique o botão Create FUNCTION. Neste momento o MySQL Query Browser abrirá uma nova aba com o título somar e com o seguinte conteúdo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- DELIMITER $$ DROP FUNCTION IF EXISTS `estudos`.`somar` $$ CREATE FUNCTION `estudos`.`somar` () RETURNS INT BEGIN END $$ DELIMITER ; Veja que este é um template para a FUNCTION que pedimos. Note que "estudos" é o nome da base de dados que estou usando no momento. Modifique o código gerado pelo MySQL Query Browser para a seguinte versão: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- DELIMITER $$ DROP FUNCTION IF EXISTS `estudos`.`somar` $$ CREATE FUNCTION `estudos`.`somar` (a INT, b INT) RETURNS INT BEGIN RETURN a + b; END $$ DELIMITER ; Agora nossa FUNCTION recebe dois INTs como argumento e retorna a soma dos dois como um INT. Clique o botão Execute para registrar a stored procedure na base de dados. c) Chegou a hora de testar a função. Vá em Arquivo -> New ResultSet Tab. Quando a janela de Query aparecer, digite o seguinte código: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- SELECT somar(4, 2); Se tudo correu como esperado, você verá o valor 6 ser exibido na janela de resultados. Para testar a função em uma instrução SELECT, basta fazer algo parecido com: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- SELECT somar(MAX(id), MIN(id)) FROM livros; Agora a FUNCTION somar() mostrará a soma dos valores máximo e mínimo da coluna id de uma tabela chamada livros. |
Link para compartilhar na Internet ou com seus amigos: |
MySQL ::: Dicas & Truques ::: Joins (Junções) |
Como agrupar dados de duas ou mais tabelas no MySQL usando LEFT JOIN (ou LEFT OUTER JOIN)Quantidade de visualizações: 14546 vezes |
A junção LEFT JOIN (ou LEFT OUTER JOIN) do MySQL é usada quando queremos agrupar dados de duas ou mais tabelas e exibir todos os registros da tabela à esquerda, mesmo que não haja correspondências (match) de registros na tabela à direita. Vamos ver um exemplo? Considere duas tabelas: jogadores e times. Um jogador pode jogar em nenhum (zero) ou um time e um time pode conter zero ou mais jogadores. Aqui a cardinalidade é de 1 x N. Comece criando a tabela de times: Comando DDL CREATE TABLE para a tabela times: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- CREATE TABLE times( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nome VARCHAR(45) NOT NULL, PRIMARY KEY(id) ) ENGINE = InnoDB; Vá em frente e insira alguns times nesta tabela. Vamos agora criar a tabela de jogadores: Comando DDL CREATE TABLE para a tabela jogadores: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- CREATE TABLE jogadores( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nome VARCHAR(45) NOT NULL, id_time INTEGER UNSIGNED, PRIMARY KEY(id), CONSTRAINT fk_jogadores_times FOREIGN KEY fk_jogadores_times(id_time) REFERENCES times(id) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB; Note que o campo id_time da tabela jogador aceita NULL, ou seja, como é possível haver jogadores sem times, devemos ser capazes de cadastrar os jogadores e só mais adiante definir o time a qual ele pertencerá. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- INSERT INTO jogadores VALUES(NULL, 'JORGINHO', NULL); Vá em frente e cadastre alguns jogadores (sem relacioná-los com algum time). Finalizado alguns cadastros de jogadores e times, use a instrução UPDATE para relacionar alguns jogadores com seus respectivos times (deixe alguns jogadores sem time). Veja um exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- UPDATE jogadores SET id_time = 3 WHERE id = 2; E aqui já podemos ver um exemplo da junção LEFT JOIN. Nossa tarefa é listar o id, nome do jogador e nome do time a qual ele pertence. Mas, queremos também incluir na listagem os jogadores que ainda não possuem times (o valor do campo id_time ainda é NULL). Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- SELECT j.id, j.nome, t.nome FROM jogadores j LEFT JOIN times t ON j.id_time = t.id; id jogador time 1 ROBERTO CARLOS ? 2 JORGINHO CRUZEIRO 3 GUSTAVO BORGES ? 4 MARCOS ? Note que o conjunto de dados retornados inclui todos os jogadores, incluindo aqueles para os quais nenhum time foi definido ainda. |
MySQL ::: Dicas & Truques ::: Data e Hora |
Como adicionar dias a uma data usando a função ADDDATE() do MySQLQuantidade de visualizações: 15843 vezes |
A função ADDDATE() é usada para adicionar dias a uma data. Veja um exemplo de seu uso:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- SELECT ADDDATE(vencimento, 30) FROM tabela_estudos Aqui o valor do campo vencimento será acrescido de 30 dias. É possível também fornecer um número negativo de dias. Neste caso a data será decrementada pelo número de dias fornecidos. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- SELECT ADDDATE(vencimento, -5) FROM tabela_estudos Se quiser, você pode ainda usar esta função para adicionar não somente dias, mas também meses, anos, semanas, etc. Veja um exemplo no qual adicionamos três meses a uma determinada data: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- SELECT ADDDATE(vencimento, INTERVAL 3 MONTH) FROM tabela_estudos |
MySQL ::: Dicas & Truques ::: Data e Hora |
Como formatar campos DATE, TIME, DATETIME e TIMESTAMP usando a função DATE_FORMAT() do MySQLQuantidade de visualizações: 25692 vezes |
A função DATE_FORMAT() é usada quando precisamos formatar os valores obtidos de campos do tipo DATE, TIME, DATETIME e TIMESTAMP. Veja um exemplo no qual obtemos o valor de um campo DATE chamado vencimento e o formatamos para o formato 30/10/2007:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- SELECT DATE_FORMAT(vencimento, '%d/%m/%Y') FROM tabela_estudos A relação de caracteres que podem ser usados na definição do formato para esta função pode ser encontrada em: http://www.arquivodecodigos.com.br/ referencias/mysql/ caracteres_formatacao_data_hora.php |
Veja mais Dicas e truques de MySQL |
Dicas e truques de outras linguagens |
JavaScript - JavaScript Avançado - Como usar o operador de bits & (E/AND sobre bits) da linguagem JavaScript Android Java - Como usar a classe Toast em suas aplicações Android |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |