MySQLチュートリアル
MySQLでは、テーブル内の操作のために後で使用できるデータベース内で関数を宣言できます.以下の2種類の関数があります.関数:この関数はある値を返します. ストアドプロシージャ:この関数は
関数を作成する
MySQLで新しい関数を作成する基本的な構造です.
ストアドプロシージャの作成
ストアドプロシージャは、この基本構造を使用して作成できます.
ノートは、MySQL hereの機能についてもっと学びます. この記事がSQLの学習に役立つことを願っています.
void
関数と同じです.この関数は戻り値を持ちません.The available built-in function in MySQL can be checked here.
関数を作成する
MySQLで新しい関数を作成する基本的な構造です.
deterministic_option
はDETERMINISTIC
またはNOT DETERMINISTIC
で満たされる.DETERMINISTIC
は、関数が常に同じパラメータ入力に対して同じ値を返すことを意味します.しかしながら、NOT DETERMINISTIC
は、関数が同じパラメータ入力に異なる値を返すことを意味します.
NOT DETERMINISTIC
is a defaultdeterministic_option
in MySQL.
DELIMITER $$
CREATE FUNCTION function_name(
parameter(s)_name data_type
)
RETURNS data_type
deterministic_option
BEGIN
function_body
END$$
DELIMITER ;
この例では、discountPrice()
という関数を入力パラメーターとして、FLOAT
データ型を価格として表します.DELIMITER $$
CREATE FUNCTION discountPrice(
price FLOAT
)
RETURNS FLOAT
DETERMINISTIC
BEGIN
-- declare a variable called discountedPrice
DECLARE discountedPrice FLOAT;
-- give a 10% discount to the price
SET discountedPrice = price - (price * 0.1);
-- return the value, in this case the discountedPrice variable
RETURN discountedPrice;
END$$
DELIMITER ;
この関数は、組み込み関数と同じように使用できます.この例ではdiscountPrice()
関数を使用します.SELECT shop.product_name, shop.price, discountPrice(shop.price) AS discounted_price FROM shop;
これは上記のクエリの出力です.+---------------+-------+------------------+
| product_name | price | discounted_price |
+---------------+-------+------------------+
| Mango | 12.5 | 11.25 |
| Low Fat Milk | 8.8 | 7.92 |
| Apple | 7.8 | 7.02 |
| Fresh Chicken | 10.3 | 9.27 |
| Corn Flakes | 2.99 | 2.691 |
+---------------+-------+------------------+
To see the function status that already created, use
SHOW FUNCTION STATUS
query.
ストアドプロシージャの作成
ストアドプロシージャは、この基本構造を使用して作成できます.
DELIMITER $$
CREATE PROCEDURE procedure_name(
IN param_name data_type,
OUT procedure_output data_type
)
BEGIN
stored_procedure_body
END$$
DELIMITER ;
この例では、getPriceWithTax()
と呼ばれるストアドプロシージャが作成されます.このストアドプロシージャは、税金を含む製品の価格を計算します.-- create a stored procedure
DELIMITER $$
CREATE PROCEDURE getPriceWithTax(
IN productId INT,
OUT updatedPrice FLOAT
)
BEGIN
-- declare the tax variable with the value = 10
DECLARE tax FLOAT DEFAULT 10;
-- declare the price variable to store the price value
DECLARE originPrice FLOAT DEFAULT 0;
-- get the product's price based on the productId
SELECT shop.price INTO originPrice FROM shop WHERE shop.id = productId;
-- set the updatedPrice
SET updatedPrice = originPrice + tax;
END$$
DELIMITER ;
ストアドプロシージャを呼び出すには、CALL
クエリを使用します.-- call the stored procedure
-- @updatedPrice is a variable
CALL getPriceWithTax(1,@updatedPrice);
-- retrieve the value from @updatedPrice variable
SELECT @updatedPrice;
これは上記のクエリの出力です.+---------------+
| @updatedPrice |
+---------------+
| 22.5 |
+---------------+
ノート
Reference
この問題について(MySQLチュートリアル), 我々は、より多くの情報をここで見つけました https://dev.to/nadirbasalamah/mysql-tutorial-7-function-30piテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol