DEV Community

nadirbasalamah
nadirbasalamah

Posted on

3 1

MySQL tutorial - 7 Function

In MySQL, a function can be declared inside the database that can be used later for operation inside the table. There are two types of function:

  • Function: this function returns a certain value.
  • Stored procedure: this function is identical with void function. This function doesn't have return value.

The available built-in function in MySQL can be checked here.

Create a function

This is the basic structure of creating a new function in MySQL. The deterministic_option can be filled with DETERMINISTIC or NOT DETERMINISTIC. DETERMINISTIC means that a function always return the same value for the same parameter input. However, the NOT DETERMINISTIC means that a function return different value for the same parameter input.

NOT DETERMINISTIC is a default deterministic_option in MySQL.

DELIMITER $$
CREATE FUNCTION function_name(
    parameter(s)_name data_type
)
RETURNS data_type

deterministic_option

BEGIN
    function_body
END$$
DELIMITER ;

Enter fullscreen mode Exit fullscreen mode

In this example, the function called discountPrice() with the input parameter that has a FLOAT data type that represents as a price.

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 ;
Enter fullscreen mode Exit fullscreen mode

This function can be used just like the built-in function, in this example the discountPrice() function is used.

SELECT shop.product_name, shop.price, discountPrice(shop.price) AS discounted_price FROM shop;
Enter fullscreen mode Exit fullscreen mode

This is the output from the query above.

+---------------+-------+------------------+
| 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 |
+---------------+-------+------------------+
Enter fullscreen mode Exit fullscreen mode

To see the function status that already created, use SHOW FUNCTION STATUS query.

Create a stored procedure

Stored procedure can be created using this basic structure.

DELIMITER $$

CREATE PROCEDURE procedure_name(
    IN  param_name data_type,
    OUT procedure_output data_type
)
BEGIN
    stored_procedure_body
END$$

DELIMITER ;
Enter fullscreen mode Exit fullscreen mode

In this example, the stored procedure called getPriceWithTax() is created. This stored procedure calculates the product's price with tax included.

-- 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 ;
Enter fullscreen mode Exit fullscreen mode

To call the stored procedure, use the CALL query.

-- call the stored procedure
-- @updatedPrice is a variable
CALL getPriceWithTax(1,@updatedPrice);

-- retrieve the value from @updatedPrice variable
SELECT @updatedPrice;
Enter fullscreen mode Exit fullscreen mode

This is the output from the query above.

+---------------+
| @updatedPrice |
+---------------+
|          22.5 |
+---------------+
Enter fullscreen mode Exit fullscreen mode

Notes

  • Learn more about function in MySQL here.

I hope this article is helpful for learning SQL, If you have any thoughts or comments you can write in the discussion section below.

Heroku

Simplify your DevOps and maximize your time.

Since 2007, Heroku has been the go-to platform for developers as it monitors uptime, performance, and infrastructure concerns, allowing you to focus on writing code.

Learn More

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs