CREATE OR REPLACE PROCEDURE registerStove (i_name IN VARCHAR2, i_phone IN VARCHAR2, i_email IN VARCHAR2, i_serial IN NUMBER) IS custID A5Customer.customerID%TYPE; stoveSerial A5Stove.serialNumber%TYPE; BEGIN custID := getCustomerID(i_name, i_phone, i_email); stoveSerial := getStoveSerial(i_serial); IF stoveSerial IS NULL THEN DBMS_OUTPUT.PUT_LINE('Stove Serial does not exist'); ROLLBACK; ELSE INSERT INTO A5Registration VALUES (custID, stoveSerial, CURRENT_DATE); COMMIT; END IF; END registerStove; CREATE OR REPLACE FUNCTION getCustomerID (i_custName IN VARCHAR2, i_custPhone IN VARCHAR2, i_custEmail IN VARCHAR2) RETURN NUMBER IS r_custID NUMBER; BEGIN SELECT customerID INTO r_custID FROM A5Customer WHERE name=i_custName AND phone=i_custPhone AND emailAddress=i_custEmail; RETURN r_custID; EXCEPTION WHEN NO_DATA_FOUND THEN createCustomer(i_custName, i_custPhone, i_custEmail); r_custID := getCustomerID(i_custName, i_custPhone, i_custEmail); RETURN r_custID; END getCustomerID;