set serveroutput on size 32000
-- show errors;

-- Question 1: Retailer detail
create or replace procedure RetailerDetail (id IN Retailers.RetailerId%TYPE) as
retailer_id Retailers.RetailerId%TYPE;
retailer_name Retailers.RetailerName%TYPE;
retailer_address Retailers.Address%TYPE;
retailer_orders Orders.Count%TYPE;
retailer_bestseller_id Products.ProductId%TYPE;
retailer_bestseller Products.ProductName%TYPE;
retailer_bestseller_count Orders.Count%TYPE;
-- CURSOR retailer_cursor IS SELECT RetailerId FROM Retailers WHERE RetailerId=id;
-- retailer_entry retailer_cursor%ROWTYPE;
CURSOR order_cursor IS SELECT Count, OrderId FROM Orders WHERE RetailerId=id;
order_entry order_cursor%ROWTYPE;
BEGIN
	SELECT RetailerName INTO retailer_name FROM Retailer WHERE RetailerId=id;
	SELECT Address INTO retailer_address FROM Retailer WHERE RetailerId=id;
	SELECT SUM(Count) INTO retailer_orders FROM Orders WHERE RetailerId=id;
	SELECT  INTO retailer_orders FROM Orders WHERE RetailerId=id;

	dbms_output.put_line('Retailer Name: ' || retailer_name);
	dbms_output.put_line('Retailer Address: ' || retailer_address);
	dbms_output.put_line('Retailer Total Orders: ' || retailer_orders);
END RetailerDetail;
/

show error procedure RetailerDetail;

-- make test cases yourselves
BEGIN
RetailerDetail(1);
end;
/

-- Queation 2: Monthly delay report
create or replace procedure MonthlyDelayReport as

BEGIN

END MonthlyDelayReport;
/
BEGIN
	MonthlyDelayReport;
End;
/

-- Question 3: Find the product with least profit in each category
create or replace procedure LeastProfitProduct as

BEGIN

END LeastProfitProduct;
/

BEGIN
	LeastProfitProduct;
END;
/

-- Queation 4: New table for retailer product category distribution
create table RetailerCatergoryTable(RetailerId integer, Electronic integer, Apparel integer, Books integer, primary key(RetailerId));
create or replace procedure RetailerProductCatergory as

BEGIN

END RetailerProductCatergory;
/

BEGIN
RetailerProductCatergory;
END;
/
select * from RetailerCatergoryTable;

drop table RetailerCatergoryTable;


-- Question 5: Exception Handle
create or replace procedure CustomerProductInfo(cid IN Customers.CustomerId%TYPE, pid IN Products.ProductId%TYPE) as

BEGIN

EXCEPTION

END CustomerProductInfo;
/

BEGIN
CustomerProductInfo(1,1);
END;
/

BEGIN
CustomerProductInfo(-1,1);
END;
/
