In MySQL, stored functions are a special type of stored program that can perform operations and return a value. They are typically used to encapsulate complex business logic and can be called within SQL statements like standard functions. The following sections will detail how to create a stored function.
1. How to Define a Stored Function
Stored functions are created using the CREATE FUNCTION statement. Typically, you need to define the following elements:
- Function Name: The name of the function you wish to create.
- Parameter List: The parameters the function receives, including parameter names and data types.
- Return Type: The data type of the value returned by the function.
- Function Body: The sequence of SQL statements or operations to execute.
2. Example
Suppose we need a function to calculate the tax-inclusive price of an input price (assuming a tax rate of 10%). Below is how to create such a function:
sqlDELIMITER $$ CREATE FUNCTION CalculateTax(price DECIMAL(10,2)) RETURNS DECIMAL(10,2) BEGIN DECLARE tax_rate DECIMAL(10,2); SET tax_rate = 0.10; RETURN price + (price * tax_rate); END$$ DELIMITER ;
3. Explanation
- DELIMITER: Since stored functions can contain multiple statements, we use
DELIMITERto change MySQL's default statement delimiter to correctly parse the entire function definition. - CREATE FUNCTION CalculateTax: Begins defining a function named
CalculateTax. - price DECIMAL(10,2): This function accepts a parameter named
pricewith aDECIMALdata type. - RETURNS DECIMAL(10,2): Specifies that the function returns a value of
DECIMALtype. - BEGIN...END: The main body of the function, where specific logic is defined.
- DECLARE tax_rate DECIMAL(10,2): Declares a variable
tax_ratewithin the function to store the tax rate. - SET tax_rate = 0.10: Assigns the value 10% to the tax rate variable.
- RETURN price + (price * tax_rate): Calculates the tax-inclusive price and returns it.
4. Calling the Function
Once the function is created, you can call it anywhere needed, such as in a SELECT statement:
sqlSELECT CalculateTax(100.00) AS TaxedPrice;
This will return the price including tax.
5. Important Notes
- Ensure you have sufficient privileges before creating the function.
- Use appropriate data types to avoid type conversion errors.
- Set the appropriate SQL security context as needed.
By creating stored functions, you can simplify complex calculations, improve code reusability, and enhance the efficiency of your database operations.