CREATE OR REPLACE PROCEDURE p_calculate_age (p_birth_date IN DATE,
p_year OUT NUMBER,
p_month OUT NUMBER,
p_day OUT NUMBER)
IS
BEGIN
SELECT TRUNC (MONTHS_BETWEEN (SYSDATE, dob) / 12) YEAR,
TRUNC (MOD (MONTHS_BETWEEN (SYSDATE, dob), 12)) MONTH,
TRUNC (
SYSDATE
- ADD_MONTHS (
dob,
TRUNC (MONTHS_BETWEEN (SYSDATE, dob) / 12) * 12
+ TRUNC (MOD (MONTHS_BETWEEN (SYSDATE, dob), 12))))
DAY
INTO p_year, p_month, p_day
FROM (SELECT TO_DATE (TO_CHAR (p_birth_date, 'DDMMRRRR'), 'DDMMRRRR')
dob
FROM DUAL);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
p_year := 0;
p_month := 0;
p_day := 0;
WHEN OTHERS
THEN
p_year := 0;
p_month := 0;
p_day := 0;
END p_calculate_age;
p_year OUT NUMBER,
p_month OUT NUMBER,
p_day OUT NUMBER)
IS
BEGIN
SELECT TRUNC (MONTHS_BETWEEN (SYSDATE, dob) / 12) YEAR,
TRUNC (MOD (MONTHS_BETWEEN (SYSDATE, dob), 12)) MONTH,
TRUNC (
SYSDATE
- ADD_MONTHS (
dob,
TRUNC (MONTHS_BETWEEN (SYSDATE, dob) / 12) * 12
+ TRUNC (MOD (MONTHS_BETWEEN (SYSDATE, dob), 12))))
DAY
INTO p_year, p_month, p_day
FROM (SELECT TO_DATE (TO_CHAR (p_birth_date, 'DDMMRRRR'), 'DDMMRRRR')
dob
FROM DUAL);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
p_year := 0;
p_month := 0;
p_day := 0;
WHEN OTHERS
THEN
p_year := 0;
p_month := 0;
p_day := 0;
END p_calculate_age;

কোন মন্তব্য নেই:
একটি মন্তব্য পোস্ট করুন