Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como criar e executar funções e procedimentos armazenados do MySQL


Este artigo descreve como criar e executar funções e procedimentos armazenados do MySQL em sua conta do A2 Hosting. Você pode usar funções e procedimentos armazenados para uma ampla variedade de cenários. Por exemplo, funções e procedimentos armazenados bem projetados podem aprimorar a segurança do banco de dados, melhorar a integridade dos dados e aumentar o desempenho.

Funções armazenadas


As funções armazenadas do MySQL fornecem uma maneira poderosa e flexível de manipular e processar dados. Você pode definir e executar funções armazenadas em qualquer servidor A2 Hosting que use MySQL.
Configurando um banco de dados de teste

Para demonstrar um exemplo básico de funções armazenadas, vamos começar criando um banco de dados que podemos usar para fins de teste. Na instrução SQL a seguir, substitua username com o nome de usuário da sua conta:
CREATE DATABASE username_test;
Você pode executar o comando SQL anterior (e os comandos SQL a seguir) na linha de comando usando a ferramenta MySQL ou em seu navegador da Web usando o phpMyAdmin.
Se você estiver usando o phpMyAdmin, clique no nome username _test para selecionar o banco de dados. Caso contrário, se você estiver usando o programa de linha de comando mysql, digite a seguinte instrução SQL:
USE username_test;

Em seguida, crie uma tabela no nome de usuário _teste banco de dados chamado produtos . Para fazer isso, execute a seguinte instrução SQL:
CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));

A instrução SQL a seguir adiciona alguns dados de amostra aos produtos tabela:
INSERT INTO products (prod_name, prod_cost, prod_price) VALUES ('Basic Widget',5.95,8.35),('Micro Widget',0.95,1.35),('Mega Widget',99.95,140.00);
Criando a função armazenada

Agora que temos um banco de dados e uma tabela para trabalhar, estamos prontos para criar uma função armazenada. Vamos criar uma função chamada calcProfit . Esta função recebe dois parâmetros de entrada:o custo e o preço de algo. Ele calcula o lucro subtraindo o custo do preço e, em seguida, retorna o valor para a expressão de chamada.

Para criar esta função armazenada, execute as seguintes instruções MySQL:
DELIMITER $$
CREATE FUNCTION calcProfit(cost FLOAT, price FLOAT) RETURNS DECIMAL(9,2)
BEGIN
  DECLARE profit DECIMAL(9,2);
  SET profit = price-cost;
  RETURN profit;
END$$
DELIMITER ;
O DELIMITADOR O comando no início dessas instruções impede o MySQL de processar a definição da função muito cedo. O DELIMITADOR comando no final dessas instruções retorna o processamento ao normal.
Usando a função armazenada

Agora você pode executar a função armazenada em uma consulta de banco de dados. A seguinte instrução SQL demonstra como fazer isso:
SELECT *, calcProfit(prod_cost,prod_price) AS profit FROM products;

Esta instrução SQL retorna os seguintes resultados:
+---------+--------------+-----------+------------+--------+
| prod_id | prod_name    | prod_cost | prod_price | profit |
+---------+--------------+-----------+------------+--------+
|       1 | Basic Widget |      5.95 |       8.35 |   2.40 |
|       2 | Micro Widget |      0.95 |       1.35 |   0.40 |
|       3 | Mega Widget  |     99.95 |        140 |  40.05 |
+---------+--------------+-----------+------------+--------+

Como você pode ver, o calcProfit A função calcula automaticamente o lucro (preço menos o custo) para cada produto na tabela.

Procedimentos armazenados


Os procedimentos armazenados às vezes são confundidos com funções armazenadas, mas são diferentes em alguns aspectos importantes. Os procedimentos armazenados, por exemplo, devem ser invocados com o CALL instrução, enquanto as funções armazenadas podem ser usadas diretamente em expressões SQL. Você pode definir e executar procedimentos armazenados em qualquer servidor A2 Hosting que use MySQL.

As instruções MySQL a seguir demonstram como criar um procedimento armazenado muito básico chamado procedureTest . Este procedimento realiza uma pesquisa simples nos produtos tabela que usamos no exemplo de função armazenada acima. Embora esse procedimento não tenha muito uso prático, ele demonstra a sintaxe e a estrutura corretas para declarar um procedimento armazenado:
DELIMITER $$
CREATE PROCEDURE procedureTest()
BEGIN
  SELECT prod_name FROM products;
END$$
DELIMITER ;

Para executar o procedimento armazenado, use a seguinte instrução MySQL:
CALL procedureTest() \G
Se você estiver usando o phpMyAdmin, digite a instrução MySQL anterior sem o \G opção no final.

Mais informações


Para obter mais informações sobre procedimentos armazenados e funções no MySQL, visite http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html.