Oracle SQL Practice Questions: Savepoints, Roles, Functions and Triggers

Classified in Computers

Written on in English with a size of 3.25 KB

set pagesize 200
set linesize 200
Vraag 1:
ALTER TABLE afspraken MODIFY duur DEFAULT 30;
SAVEPOINT save_before;
INSERT INTO afspraken (datum, uur, pat) VALUES ('30-JAN-19', 14.15, 'p5');
INSERT INTO afspraken (datum, uur, pat) VALUES ('12-FEB-19', 9.10, 'p2');
INSERT INTO afspraken (datum, uur, pat) VALUES ('05-MAY-19', 13.30, 'p5');
ROLLBACK TO SAVEPOINT save_before;
COMMIT;
Vraag 2:
CREATE TABLE tarieven (code NUMBER(3) NOT NULL, bedrag NUMBER(4));
INSERT INTO tarieven VALUES (&code, &bedrag);
INSERT INTO tarieven VALUES (&code, &bedrag);
INSERT INTO tarieven VALUES (&code, &bedrag);
INSERT INTO tarieven VALUES (&code, &bedrag);
INSERT INTO tarieven VALUES (&code, &bedrag);
UPDATE behandelingen b
SET b.bedrag = (SELECT t.bedrag FROM tarieven t
WHERE b.code = t.code AND b.bedrag < t.bedrag);


Vraag 3:
CREATE VIEW zieAfspraken AS SELECT * FROM afspraken WHERE datum > SYSDATE;
CREATE ROLE prof;
GRANT SELECT, UPDATE(uur) ON zieAfspraken TO prof;
GRANT prof TO Vanneuvillek;
REVOKE prof FROM Vanneuvillek;
Vraag 4:
Probleemloos, omdat de statements gebeuren op verschillende tijdstippen.
Vraag 5:
Neen, er wordt geen INDEX gebruikt omdat er geen WHERE clause aanwezig is.
Is er wel een WHERE clause, dan mag er GEEN functies, mathematische expressies, of IS NULL/NOT NULL expressies aanwezig zijn.
Vraag 6:
CREATE OR REPLACE FUNCTION geef_omschrijving(v_deelcode IN behandelingen.deelcode%TYPE)
RETURN VARCHAR2
IS
mijnOmschrijving behandelingen.omschrijving%TYPE;
BEGIN
SELECT omschrijving INTO mijnOmschrijving
FROM behandelingen
WHERE deelcode = v_deelcode;
RETURN (mijnOmschrijving);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
DBMS_OUTPUT.PUT_LINE('Foute invoer');
END;
/
Vraag 7:
DROP TABLE audit_behandelingen;
CREATE TABLE audit_behandelingen
(
oude_code NUMBER(3),
nieuwe_code NUMBER(3),
oude_deelcode NUMBER(3),
nieuwe_deelcode NUMBER(3),
oude_omschrijving VARCHAR2(255),
nieuwe_omschrijving VARCHAR2(255),
oude_bedrag NUMBER(3),
nieuwe_bedrag NUMBER(3)
);
CREATE OR REPLACE TRIGGER behandelingen_trigger
AFTER UPDATE OR DELETE ON behandelingen
FOR EACH ROW
BEGIN
INSERT INTO audit_behandelingen
(oude_code,nieuwe_code,oude_deelcode,nieuwe_deelcode,oude_omschrijving,nieuwe_omschrijving,oude_bedrag,nieuwe_bedrag)
VALUES (
:OLD.code,
:NEW.code,
:OLD.deelcode,
:NEW.deelcode,
:OLD.omschrijving,
:NEW.omschrijving,
:OLD.bedrag,
:NEW.bedrag);
END;
/

Related entries: