Hey guys, I have a homework assignment due at midnight central time and im stuck. I have to select the child name and parent name from this table and then output the child name, parent name, parent of the parent, parent of the parent's parent... and so on. Im stuck on the hard part lol. Any help would be appreciated.
Here's the create table statement:
Heres my code so far:
I know its a mess but please bare with me....
Here's the create table statement:
Code:
CREATE TABLE region
(
PARENT_NAME VARCHAR2(30),
CHILD_NAME VARCHAR2(30)
);
INSERT INTO region VALUES('N/A','Asia');
INSERT INTO region VALUES('N/A','Australia');
INSERT INTO region VALUES('N/A','Europe');
INSERT INTO region VALUES('N/A','North America');
INSERT INTO region VALUES('Asia','China');
INSERT INTO region VALUES('Asia','Japan');
INSERT INTO region VALUES('Australia','New South Wales');
INSERT INTO region VALUES('New South Wales','Sydney');
INSERT INTO region VALUES('Canada','Ontario');
INSERT INTO region VALUES('China','Beijing');
INSERT INTO region VALUES('England','London');
INSERT INTO region VALUES('Europe','United Kingdom');
INSERT INTO region VALUES('Illinois','Aurora');
INSERT INTO region VALUES('Illinois','Cook County');
INSERT INTO region VALUES('Illinois','Rockford');
INSERT INTO region VALUES('Wisconsin','Madison');
INSERT INTO region VALUES('Japan','Osaka');
INSERT INTO region VALUES('Japan','Tokyo');
INSERT INTO region VALUES('North America','Canada');
INSERT INTO region VALUES('North America','United States');
INSERT INTO region VALUES('Ontario','Ottawa');
INSERT INTO region VALUES('Ontario','Toronto');
INSERT INTO region VALUES('United States','Colorado');
INSERT INTO region VALUES('United States','Illinois');
INSERT INTO region VALUES('United States','Texas');
INSERT INTO region VALUES('United Kingdom','England');
INSERT INTO region VALUES('Texas','Rockford');
INSERT INTO region VALUES('Colorado','Aurora');
INSERT INTO region VALUES('Cook County','Chicago');
COMMIT;
Heres my code so far:
Code:
ACCEPT p_1 PROMPT 'Please enter the region name (Child Name):'
DECLARE
v_Child_Name REGION.CHILD_NAME%TYPE := '&p_1';
v_Parent_Name VARCHAR2(40);
v_column_name VARCHAR2(100);
v_count NUMBER := 0;
-- First cursor
CURSOR c_get_tables
IS
SELECT PARENT_NAME FROM REGION WHERE UPPER(CHILD_NAME) = UPPER(v_Child_Name);
CURSOR c_get_everythingelse
SELECT Parent_name,
Child_name
FROM REGION
WHERE BEGIN DBMS_OUTPUT.PUT_LINE('<<<<< BEGIN OUTPUT >>>>>');
--DBMS_OUTPUT.PUT_LINE('<'||V_CHILD_NAME||'>');
-- Open first cursor
OPEN c_get_tables;
LOOP
v_count := v_count + 1;
FETCH c_get_tables INTO v_Parent_Name;
IF v_parent_name ='N/A' THEN --How else would i do this without hardcoding?--
DBMS_OUTPUT.PUT_LINE('Line '||v_count||'1 <'||Upper(v_child_name)||'>');
ELSE
DBMS_OUTPUT.PUT_LINE('Line '||v_count||' 2 '||Upper(v_Parent_name));
EXIT;
END IF;
EXIT
WHEN c_get_tables%NOTFOUND;
v_count := v_count + 1;
END LOOP;
CLOSE c_get_tables;
DBMS_OUTPUT.PUT_LINE('<<<<< END OUTPUT >>>>>');
END;
I know its a mess but please bare with me....