PLSQL Functions
Function is a named PL/SQL block that can return a value and can be used in SQL statements. Functions can take parameters, perform operations, and return results.
Features:
- Reusable Code: Functions allow you to encapsulate logic that can be reused in different parts of your application or database queries.
- Return Values: They can return a single value of a specific data type, such as NUMBER, VARCHAR2, etc.
- Input Parameters: Functions can take zero or more input parameters, allowing for dynamic calculations based on input values.
- PL/SQL Support: They can include complex logic, such as loops and conditional statements, making them powerful for data processing.
- Use in SQL Statements: Functions can be called directly within SQL statements, enabling their use in SELECT, WHERE, and ORDER BY clauses.
- Overloading: You can create multiple functions with the same name but different parameter types or counts, allowing for flexibility in usage.
- Integration with Triggers and Procedures: Functions can be called from triggers and stored procedures, enhancing their utility in the database.
- Security: Functions can encapsulate business logic and help manage access to underlying data by controlling how data is processed and returned.
Simple Example for function:
CREATE OR REPLACE FUNCTION calculate_area(radius IN NUMBER)
RETURN NUMBER
IS
BEGIN
RETURN 3.14 * radius * radius;
END;
/
Run: SELECT calculate_area(5) AS area FROM dual;
Example:
CREATE OR REPLACE FUNCTION increment_salary(emp_id IN NUMBER, increment_amount IN NUMBER)
RETURN VARCHAR2
IS
BEGIN
UPDATE employees
SET salary = salary + increment_amount WHERE employee_id = emp_id;
COMMIT; -- Commit the changes
RETURN 'Salary updated successfully.';
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN 'Employee not found.';
WHEN OTHERS THEN
RETURN 'An error occurred: ' || SQLERRM;
END;
/
Run: SELECT increment_salary(1, 5000) FROM dual;
Drop the Function:
DROP FUNCTION function_name;
Difference procedure and function:
Function |
Procedure |
Must return a value |
Does not return a value |
Can be used in SQL |
Cannot be used in SQL |
Calculations |
Actions and processes |
Input parameters only |
IN, OUT, IN OUT parameters |
Can raise exceptions |
Can raise exceptions |
Comments
Post a Comment