Hoi, allemaal !!!!
Ben een SQL newbie eigelijk, we krijgen het nu op school, en we hebben nu een aantal opdrachtjes gekregen die over CURSORS gaan. Ik vroeg me af of ik het goed deed, en zo niet wat ik anders had moeten of misschien iets makkelijk kunnen dun ofzo. Hieronder staan de opgaven en de door mij uitgewerkte antwoorden en de benodigde tabellen, ik heb de theorie bestudeerd, maar is vrij onduidelijk zeg maar. En ik kan het niet controlleren omdat ik geen Oracle op mijn pc heb draaien. Ik lees ook bijvoorbeeld iets over DECLARE over de theorie maar dat zie ik verder niet in de voorbeelden terug.
OPGAVEN:
opgave1.
Maak een procedure, die de namen van de vice-presidenten, die ook president zijn geweest, in een hulptabel plaatst. Maak de inhoud van deze tabel zichtbaar.
Opgave 2.
Maak een procedure, die de naam en het geboortejaar van alle presidenten, die nog niet getrouwd zijn, in een hulptabel plaatst. Maak de inhoud van deze tabel zichtbaar.
Opgave 3.
Maak een procedure, die de namen van de echtgenote(n) van een bepaalde gehuwde president in een hulptabel plaatst. Maak de inhoud van deze tabel zichtbaar.
MIJN UITWERKINGEN:
Opgave 1.
CREATE OR REPLACE PROCEDURE opgave1
IS
CURSOR opgave1_cursor IS
SELECT x.vice_pres_name
FROM ADM_PR_VP x
WHERE EXIST
(SELECT pres_name
FROM ADM_PR_VP)
ORDER BY state_name;
v_vice ADM_PR_VP.vice_pres_name%TYPE ;
BEGIN
OPEN opgave1_cursor;
WHILE opgave1_cursor%FOUND LOOP
FETCH opgave1_cursor INTO v_vice,v_pres,V_state;
END LOOP;
CLOSE opgave1_cursor;
END;
Opgave 2.
CREATE OR REPLACE PROCEDURE opgave2
IS
CURSOR opgave2_cursor IS
SELECT p.pres_name,p.birth_yr,
FROM PRESIDENT P
WHERE NOT EXISTS
(SELECT h.pres_name
FROM pres_marriage h
WHERE p.pres_name = h.pres_name)
ORDER BY state_name,birth_yr;
v_presname PRESIDENT.pres_name%TYPE
v_birth PRESIDENT.birth_yr%TYPE
BEGIN
OPEN opgave2_cursor;
WHILE opgave2_cursor%FOUND LOOP
FETCH opgave2_cursor INTO v_presname,v_birth;
END LOOP;
CLOSE opgave2_cursor;
END;
Opgave 3.
CREATE OR REPLACE PROCEDURE opgave3
IS
CURSOR opgave3_cursor IS
SELECT spouse_name
FROM pres_marriage
ORDER BY state_name;
v_spousename PRES_MARRIAGE.spouse_name%TYPE;
BEGIN
OPEN opgave3_cursor;
WHILE opgave3_cursor%FOUND LOOP
FETCH opgave3_cursor INTO v_spousename;
END LOOP;
CLOSE opgave3_cursor;
END;
Tabellen:
ADM_PR_VP
(admin_nr NUMBER(2) nr van de 'regering'
pres_name CHAR(20) naam van de president
vice_pres_name CHAR(20) naam van de vice-president)
PRESIDENT
(pres_name CHAR(20) naam van de president
birth_yr NUMBER(4) geboortejaar
yrs_serv NUMBER(2) aantal dienstjaren
death_age NUMBER(2) leeftijd bij overlijden
party CHAR(10) partij waartoe behorend state_born CHAR(15) staat waarin geboren)
PRES_MARRIAGE
(pres_name CHAR(20) naam van de president
spouse_name CHAR(20) naam van eega
pr_age NUMBER(2) leeftijd president bij huwelijk
sp_age NUMBER(2) leeftijd echtgenote bij huwelijk
nr_children NUMBER(2) aantal kinderen in dit huwelijk
mar_year NUMBER(4) huwelijksjaar)
Ben een SQL newbie eigelijk, we krijgen het nu op school, en we hebben nu een aantal opdrachtjes gekregen die over CURSORS gaan. Ik vroeg me af of ik het goed deed, en zo niet wat ik anders had moeten of misschien iets makkelijk kunnen dun ofzo. Hieronder staan de opgaven en de door mij uitgewerkte antwoorden en de benodigde tabellen, ik heb de theorie bestudeerd, maar is vrij onduidelijk zeg maar. En ik kan het niet controlleren omdat ik geen Oracle op mijn pc heb draaien. Ik lees ook bijvoorbeeld iets over DECLARE over de theorie maar dat zie ik verder niet in de voorbeelden terug.
OPGAVEN:
opgave1.
Maak een procedure, die de namen van de vice-presidenten, die ook president zijn geweest, in een hulptabel plaatst. Maak de inhoud van deze tabel zichtbaar.
Opgave 2.
Maak een procedure, die de naam en het geboortejaar van alle presidenten, die nog niet getrouwd zijn, in een hulptabel plaatst. Maak de inhoud van deze tabel zichtbaar.
Opgave 3.
Maak een procedure, die de namen van de echtgenote(n) van een bepaalde gehuwde president in een hulptabel plaatst. Maak de inhoud van deze tabel zichtbaar.
MIJN UITWERKINGEN:
Opgave 1.
CREATE OR REPLACE PROCEDURE opgave1
IS
CURSOR opgave1_cursor IS
SELECT x.vice_pres_name
FROM ADM_PR_VP x
WHERE EXIST
(SELECT pres_name
FROM ADM_PR_VP)
ORDER BY state_name;
v_vice ADM_PR_VP.vice_pres_name%TYPE ;
BEGIN
OPEN opgave1_cursor;
WHILE opgave1_cursor%FOUND LOOP
FETCH opgave1_cursor INTO v_vice,v_pres,V_state;
END LOOP;
CLOSE opgave1_cursor;
END;
Opgave 2.
CREATE OR REPLACE PROCEDURE opgave2
IS
CURSOR opgave2_cursor IS
SELECT p.pres_name,p.birth_yr,
FROM PRESIDENT P
WHERE NOT EXISTS
(SELECT h.pres_name
FROM pres_marriage h
WHERE p.pres_name = h.pres_name)
ORDER BY state_name,birth_yr;
v_presname PRESIDENT.pres_name%TYPE
v_birth PRESIDENT.birth_yr%TYPE
BEGIN
OPEN opgave2_cursor;
WHILE opgave2_cursor%FOUND LOOP
FETCH opgave2_cursor INTO v_presname,v_birth;
END LOOP;
CLOSE opgave2_cursor;
END;
Opgave 3.
CREATE OR REPLACE PROCEDURE opgave3
IS
CURSOR opgave3_cursor IS
SELECT spouse_name
FROM pres_marriage
ORDER BY state_name;
v_spousename PRES_MARRIAGE.spouse_name%TYPE;
BEGIN
OPEN opgave3_cursor;
WHILE opgave3_cursor%FOUND LOOP
FETCH opgave3_cursor INTO v_spousename;
END LOOP;
CLOSE opgave3_cursor;
END;
Tabellen:
ADM_PR_VP
(admin_nr NUMBER(2) nr van de 'regering'
pres_name CHAR(20) naam van de president
vice_pres_name CHAR(20) naam van de vice-president)
PRESIDENT
(pres_name CHAR(20) naam van de president
birth_yr NUMBER(4) geboortejaar
yrs_serv NUMBER(2) aantal dienstjaren
death_age NUMBER(2) leeftijd bij overlijden
party CHAR(10) partij waartoe behorend state_born CHAR(15) staat waarin geboren)
PRES_MARRIAGE
(pres_name CHAR(20) naam van de president
spouse_name CHAR(20) naam van eega
pr_age NUMBER(2) leeftijd president bij huwelijk
sp_age NUMBER(2) leeftijd echtgenote bij huwelijk
nr_children NUMBER(2) aantal kinderen in dit huwelijk
mar_year NUMBER(4) huwelijksjaar)