Procedures, Functions and Packages

Harry · 11 Sep 2026 · 11 views

Stored Procedures

CREATE OR REPLACE PROCEDURE GetCustomer(id_in NUMBER) AS
  v_name VARCHAR2(100);
BEGIN
  SELECT name INTO v_name FROM customers WHERE id = id_in;
  DBMS_OUTPUT.PUT_LINE(v_name);
END GetCustomer;
/

EXEC GetCustomer(1);

Stored Functions

CREATE OR REPLACE FUNCTION discounted(total_in NUMBER)
RETURN NUMBER AS
BEGIN
  RETURN total_in * 0.9;
END discounted;
/

SELECT discounted(100) FROM dual;

Packages Group Related Objects

CREATE OR REPLACE PACKAGE customer_api AS
  PROCEDURE AddCustomer(p_name IN VARCHAR2, p_email IN VARCHAR2);
  FUNCTION  TotalSpend(p_id NUMBER) RETURN NUMBER;
END customer_api;
/

CREATE OR REPLACE PACKAGE BODY customer_api AS
  PROCEDURE AddCustomer(p_name IN VARCHAR2, p_email IN VARCHAR2) IS
  BEGIN
    INSERT INTO customers (name, email) VALUES (p_name, p_email);
    COMMIT;
  END AddCustomer;

  FUNCTION TotalSpend(p_id NUMBER) RETURN NUMBER IS
    v_sum NUMBER := 0;
  BEGIN
    SELECT NVL(SUM(total), 0) INTO v_sum FROM orders WHERE customer_id = p_id;
    RETURN v_sum;
  END TotalSpend;
END customer_api;
/

Key Points

  • PROCEDURES do work; FUNCTIONS return a value.
  • CREATE OR REPLACE rewrites without losing grants.
  • Packages wrap related procedures and functions.
  • EXEC calls a procedure; functions appear in SELECT.
Share this post:

Comments (0)

Please login or register to comment.