Cursos / Informática para Internet / Banco de dados / Aula

arrow_back Aula 15 - Linguagem SQL – Stored Procedures

Usando estruturas de programação em procedimentos armazenados

Os procedimentos armazenados são estruturas extremamente poderosas que facilitam a interação dos usuários com o servidor de banco de dados, além de ajudar no controle de acesso aos dados, aumentando a segurança do sistema, como mencionado anteriormente. Um dos requisitos que contribuem para essas características dos procedimentos está na possibilidade de uso de estruturas de controle de fluxo de dados, como estruturas de decisão e de repetição.

Você está familiarizado com algumas dessas estruturas, pois já foram apresentadas nas disciplinas de Lógica e Linguagem de Programação. As estruturas de controle de fluxo definidas no MySQL são: IF, CASE, LOOP, LEAVE, ITERATE, REPEAT e WHILE. Vamos discutir as duas mais usadas, o IF, que define estruturas de decisão, e o WHILE, que define estruturas de repetição. O destaque a seguir apresenta a estrutura do IF em MySQL.

A sintaxe pode ser explicada do seguinte modo: SE (IF) a condição 1 é satisfeita, um grupo de comandos em SQL é executado, SENÃO SE (ELSEIF) a condição 2 é satisfeita, outro grupo de comandos em SQL é executado e, finalmente, se nenhuma (SENÃO – ELSE) das condições anteriores for satisfeita, o último grupo de comando é executado. Lembrando que os termos entre chaves (“[“ e “]”) são opcionais.

Para exemplificar a utilização da estrutura IF ... END IF num procedimento armazenado, imagine que precisamos definir um procedimento para inserção de clientes no nosso banco de dados sistvendas, mas para isso, devemos garantir que sejam informados o nome e o CPF do cliente. O destaque a seguir apresenta uma solução para esse problema. Analise com atenção a sequência de comandos apresentada.

Observe que no quadro anterior é definido um procedimento com dois parâmetros de entrada (nome_cliente, cpf_cliente) que serão inseridos na tabela clientes SE os respectivos parâmetros não forem nulos, SENÃO é apresentada na tela uma mensagem de erro. A condição do IF é definida usando o operador “!=” que significa DIFERENTE DE e o operador lógico AND, ou seja, SE nome_cliente DIFERENTE DE vazio E cpf_cliente DIFERENTE DE vazio, a operação de inserção é executada. Observe também o uso do comando SELECT para impressão de mensagens na tela. A Figura 5 apresenta a construção do procedimento descrito anteriormente no MySQL.

Tela do MySQL após o comando CREATE PROCEDURE com estrutura IF/ELSE, CALL e SELECT.

Além da criação do procedimento discutido no quadro anterior, a Figura 5 traz um exemplo de uso do procedimento informando corretamente os dados de inserção, outro em que os dados não são informados de forma correta e os dados contidos na tabela clientes após a execução do procedimento. Lembre que, pela definição da tabela clientes, a coluna cli_codigo é chave primária, de modo que, para não haver problemas na utilização do procedimento, é necessário que esta coluna seja do tipo AUTO_INCREMENT, além disso a tabela clientes deverá permitir a inserção de novos registros com os atributos cli_sexo e cli_dataNascimento com os valores NULL, pois a nossa procedure que criamos utiliza apenas o nome e CPF para inserir um novo cliente.

Versão 5.3 - Todos os Direitos reservados