delimiter //
use monotest
//

-- =================================== OBJECT NUMERIC_FAMILY =========================
-- TABLE : INT_FAMILY
-- data with id > 6000 is not gaurenteed to be read-only.
//

create table numeric_family (
	id int PRIMARY KEY NOT NULL,
	type_bit bit NULL,
	type_tinyint tinyint NULL,
	type_smallint smallint NULL,
	type_int int NULL,
	type_bigint bigint NULL,
	type_decimal decimal (38, 0) NULL,
	type_numeric numeric (38, 0) NULL,
	type_money numeric (38,0) NULL,
	type_smallmoney numeric (12,0) NULL);
-- does not have money & smallmoney types
//

insert into numeric_family values (1,1,255,32767,2147483647,9223372036854775807,1000,1000,922337203685477.5807,214748.3647);
insert into numeric_family values (2,0,0,-32768,-2147483648,-9223372036854775808,-1000,-1000,-922337203685477.5808,-214748.3648);
insert into numeric_family values (3,0,0,0,0,0,0,0,0,0);
insert into numeric_family values (4,null,null,null,null,null,null,null,null,null);
//

-- =================================== END OBJECT NUMERIC_FAMILY ========================

-- =================================== OBJECT BINARY_FAMILY =========================
-- TABLE : INT_FAMILY
-- data with id > 6000 is not gaurenteed to be read-only.
//

create table binary_family (
	id int PRIMARY KEY NOT NULL,
	type_binary binary NULL,
	type_varbinary varbinary (255) NULL,
	type_blob blob NULL,
	type_tinyblob tinyblob NULL,
	type_mediumblob mediumblob NULL,
	type_longblob_image longblob NULL);
//

insert into binary_family values (1, '555555', '0123456789012345678901234567890123456789012345678901234567890123456789', '66666666', '777777', '888888', '999999');
--insert into binary_family values (2,
--insert into binary_family values (3,
insert into binary_family values (4,null,null,null,null,null,null);
//

-- =================================== END OBJECT BINARY_FAMILY ========================


-- =================================== OBJECT EMPLOYEE ============================
-- TABLE : EMPLOYEE
-- data with id above 6000 is not gaurenteed to be read-only.
//

create table employee ( 
	id int PRIMARY KEY NOT NULL, 
	fname varchar (50) NOT NULL,
	lname varchar (50),
	dob datetime NOT NULL,
	doj datetime NOT NULL,
	email varchar (50));

grant all privileges on employee to monotester;

insert into employee values (1, 'suresh', 'kumar', '1978-08-22', '2001-03-12', 'suresh@gmail.com');
insert into employee values (2, 'ramesh', 'rajendran', '1977-02-15', '2005-02-11', 'ramesh@yahoo.com');
insert into employee values (3, 'venkat', 'ramakrishnan', '1977-06-12', '2003-12-11', 'ramesh@yahoo.com');
insert into employee values (4, 'ramu', 'dhasarath', '1977-02-15', '2005-02-11', 'ramesh@yahoo.com');
//

-- STORED PROCEDURES
-- SP : sp_clean_person_table
drop procedure if exists sp_clean_employee_table;
//

create procedure sp_clean_employee_table ()
begin
	delete from employee where id > 6000;
end
//

-- SP : sp_get_age
drop procedure if exists sp_get_age;
//

create procedure sp_get_age (
	fname varchar (50),
	OUT age int)
as 
begin
	select age = datediff (day, dob, getdate ()) from employee where fname like fname;
	return age;
end
//

-- =================================== END OBJECT EMPLOYEE ============================