Advertisement
rejcsibejcsi

plsql2

May 21st, 2023
2,180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 16.94 KB | None | 0 0
  1. -- create table about director
  2. CREATE TABLE directors ( id INT NOT NULL PRIMARY KEY, name VARCHAR2(255) NOT NULL, born NUMERIC(4) NOT NULL CHECK (born BETWEEN 1900 AND 2022), gender VARCHAR2(255) NOT NULL, country VARCHAR2(255) NOT NULL );
  3. CREATE SEQUENCE directors_sequence;
  4. CREATE
  5. OR REPLACE TRIGGER directors_on_insert BEFORE INSERT
  6. ON directors FOR EACH ROW
  7. BEGIN
  8.    SELECT
  9.       directors_sequence.NEXTVAL INTO :NEW.id
  10.    FROM
  11.       dual;
  12. END
  13. ;
  14. -- create table about studios
  15. CREATE TABLE studios ( id INT NOT NULL PRIMARY KEY, name VARCHAR2(255) NOT NULL, founded NUMERIC(4) NOT NULL CHECK (founded BETWEEN 1800 AND 2022), country VARCHAR2(255) NOT NULL );
  16. CREATE SEQUENCE studios_sequence;
  17. CREATE
  18. OR REPLACE TRIGGER studios_on_insert BEFORE INSERT
  19. ON studios FOR EACH ROW
  20. BEGIN
  21.    SELECT
  22.       studios_sequence.NEXTVAL INTO :NEW.id
  23.    FROM
  24.       dual;
  25. END
  26. ;
  27. -- create table about movies
  28. CREATE TABLE movies ( id INT NOT NULL PRIMARY KEY, title VARCHAR2(255) NOT NULL, YEAR NUMERIC(4) NOT NULL CHECK (YEAR BETWEEN 1900 AND 2022), director NUMERIC(10) NOT NULL, genre VARCHAR2(255) NOT NULL, rating NUMERIC(2) NOT NULL CHECK (rating BETWEEN 0 AND 10), studio NUMERIC(10) NOT NULL, FOREIGN KEY (studio) REFERENCES studios(id), FOREIGN KEY (director) REFERENCES directors(id) );
  29. CREATE SEQUENCE movies_sequence;
  30. CREATE
  31. OR REPLACE TRIGGER movies_on_insert BEFORE INSERT
  32. ON movies FOR EACH ROW
  33. BEGIN
  34.    SELECT
  35.       movies_sequence.NEXTVAL INTO :NEW.id
  36.    FROM
  37.       dual;
  38. END
  39. ;
  40. -- mysql create table about actors
  41. CREATE TABLE actors ( id INT NOT NULL PRIMARY KEY, name VARCHAR2(255) NOT NULL, born NUMERIC(4) NOT NULL CHECK (born BETWEEN 1900 AND 2022), gender VARCHAR2(255) NOT NULL, country VARCHAR2(255) NOT NULL );
  42. CREATE SEQUENCE actors_sequence;
  43. CREATE
  44. OR REPLACE TRIGGER actors_on_insert BEFORE INSERT
  45. ON actors FOR EACH ROW
  46. BEGIN
  47.    SELECT
  48.       actors_sequence.NEXTVAL INTO :NEW.id
  49.    FROM
  50.       dual;
  51. END
  52. ;
  53. -- create table about movieActors
  54. CREATE TABLE movieactors ( id INT NOT NULL PRIMARY KEY, movie_id INT, actor_id INT, FOREIGN KEY (actor_id) REFERENCES actors(id), FOREIGN KEY (movie_id) REFERENCES movies(id) );
  55. CREATE SEQUENCE movieactors_sequence;
  56. CREATE
  57. OR REPLACE TRIGGER movieactors_on_insert BEFORE INSERT
  58. ON movieactors FOR EACH ROW
  59. BEGIN
  60.    SELECT
  61.       movieactors_sequence.NEXTVAL INTO :NEW.id
  62.    FROM
  63.       dual;
  64. END
  65. ;
  66. -- create table about reviews
  67. CREATE TABLE reviews ( id INT NOT NULL PRIMARY KEY, movie_id NUMERIC(10) NOT NULL, review VARCHAR2(255), rating NUMERIC(2) NOT NULL CHECK (rating BETWEEN 0 AND 10), date_r DATE, FOREIGN KEY (movie_id) REFERENCES movies(id) );
  68. CREATE SEQUENCE reviews_sequence;
  69. CREATE
  70. OR REPLACE TRIGGER reviews_on_insert BEFORE INSERT
  71. ON reviews FOR EACH ROW
  72. BEGIN
  73.    SELECT
  74.       reviews_sequence.NEXTVAL INTO :NEW.id
  75.    FROM
  76.       dual;
  77. END
  78. ;
  79. -- INSERTS
  80. -- inserts for directors
  81. INSERT INTO
  82.    directors ( name, born, gender, country )
  83. VALUES
  84.    (
  85.       'Frank Darabont',
  86.       1959,
  87.       'male',
  88.       'France'
  89.    )
  90. ;
  91. INSERT INTO
  92.    directors ( name, born, gender, country )
  93. VALUES
  94.    (
  95.       'Francis Ford Coppola',
  96.       1939,
  97.       'male',
  98.       'USA'
  99.    )
  100. ;
  101. INSERT INTO
  102.    directors ( name, born, gender, country )
  103. VALUES
  104.    (
  105.       'Christopher Nolan',
  106.       1970,
  107.       'male',
  108.       'UK'
  109.    )
  110. ;
  111. -- inserts for studios
  112. INSERT INTO
  113.    studios ( name, founded, country )
  114. VALUES
  115.    (
  116.       'Castle Rock Entertainment',
  117.       1987,
  118.       'USA'
  119.    )
  120. ;
  121. INSERT INTO
  122.    studios ( name, founded, country )
  123. VALUES
  124.    (
  125.       'Paramount Pictures',
  126.       1912,
  127.       'USA'
  128.    )
  129. ;
  130. INSERT INTO
  131.    studios ( name, founded, country )
  132. VALUES
  133.    (
  134.       'Warner Bros.',
  135.       1923,
  136.       'USA'
  137.    )
  138. ;
  139. -- inserts for movies
  140. INSERT INTO
  141.    movies ( title, YEAR, director, genre, rating, studio )
  142. VALUES
  143.    (
  144.       'The Shawshank Redemption',
  145.       1994,
  146.       1,
  147.       'Drama',
  148.       9.2,
  149.       1
  150.    )
  151. ;
  152. INSERT INTO
  153.    movies ( title, YEAR, director, genre, rating, studio )
  154. VALUES
  155.    (
  156.       'The Godfather',
  157.       1972,
  158.       2,
  159.       'Crime',
  160.       9.2,
  161.       2
  162.    )
  163. ;
  164. INSERT INTO
  165.    movies ( title, YEAR, director, genre, rating, studio )
  166. VALUES
  167.    (
  168.       'The Godfather: Part II',
  169.       1974,
  170.       2,
  171.       'Crime',
  172.       9.0,
  173.       2
  174.    )
  175. ;
  176. INSERT INTO
  177.    movies ( title, YEAR, director, genre, rating, studio )
  178. VALUES
  179.    (
  180.       'The Dark Knight',
  181.       2008,
  182.       3,
  183.       'Action',
  184.       9.0,
  185.       3
  186.    )
  187. ;
  188. INSERT INTO
  189.    movies ( title, YEAR, director, genre, rating, studio )
  190. VALUES
  191.    (
  192.       'The Green Mile',
  193.       1999,
  194.       1,
  195.       'Drama',
  196.       8.6,
  197.       1
  198.    )
  199. ;
  200. BEGIN
  201.    -- inserts for actors
  202.    -- The Shawshank Redemption
  203.    INSERT INTO
  204.       actors ( name, born, gender, country )
  205.    VALUES
  206.       (
  207.          'Tim Robbins',
  208.          1958,
  209.          'male',
  210.          'USA'
  211.       )
  212. ;
  213. INSERT INTO
  214.    actors ( name, born, gender, country )
  215. VALUES
  216.    (
  217.       'Morgan Freeman',
  218.       1937,
  219.       'male',
  220.       'USA'
  221.    )
  222. ;
  223. -- The Godfather
  224. INSERT INTO
  225.    actors ( name, born, gender, country )
  226. VALUES
  227.    (
  228.       'Marlon Brando',
  229.       1924,
  230.       'male',
  231.       'USA'
  232.    )
  233. ;
  234. INSERT INTO
  235.    actors ( name, born, gender, country )
  236. VALUES
  237.    (
  238.       'Al Pacino',
  239.       1940,
  240.       'male',
  241.       'USA'
  242.    )
  243. ;
  244. -- The Godfather: Part II  alpacino
  245. INSERT INTO
  246.    actors ( name, born, gender, country )
  247. VALUES
  248.    (
  249.       'Robert De Niro',
  250.       1943,
  251.       'male',
  252.       'USA'
  253.    )
  254. ;
  255. -- The Dark Knight
  256. INSERT INTO
  257.    actors ( name, born, gender, country )
  258. VALUES
  259.    (
  260.       'Christian Bale',
  261.       1974,
  262.       'male',
  263.       'UK'
  264.    )
  265. ;
  266. INSERT INTO
  267.    actors ( name, born, gender, country )
  268. VALUES
  269.    (
  270.       'Heath Ledger',
  271.       1979,
  272.       'male',
  273.       'Australia'
  274.    )
  275. ;
  276. -- The Green Mile
  277. INSERT INTO
  278.    actors ( name, born, gender, country )
  279. VALUES
  280.    (
  281.       'Tom Hanks',
  282.       1956,
  283.       'male',
  284.       'USA'
  285.    )
  286. ;
  287. INSERT INTO
  288.    actors ( name, born, gender, country )
  289. VALUES
  290.    (
  291.       'Michael Clarke Duncan',
  292.       1957,
  293.       'male',
  294.       'USA'
  295.    )
  296. ;
  297. END
  298. ;
  299. BEGIN
  300.    -- inserts for reviews
  301.    INSERT INTO
  302.       reviews ( movie_id, review, rating, date_r )
  303.    VALUES
  304.       (
  305.          1,
  306.          'Great movie!',
  307.          9,
  308.          TO_DATE('2019-01-01', 'YYYY-MM-DD')
  309.       )
  310. ;
  311. INSERT INTO
  312.    reviews ( movie_id, review, rating, date_r )
  313. VALUES
  314.    (
  315.       1,
  316.       'Awesome!',
  317.       10,
  318.       TO_DATE('2019-01-02', 'YYYY-MM-DD')
  319.    )
  320. ;
  321. INSERT INTO
  322.    reviews ( movie_id, review, rating, date_r )
  323. VALUES
  324.    (
  325.       2,
  326.       'Pretty good!',
  327.       9,
  328.       TO_DATE( '2010-11-22', 'YYYY-MM-DD')
  329.    )
  330. ;
  331. INSERT INTO
  332.    reviews ( movie_id, review, rating, date_r )
  333. VALUES
  334.    (
  335.       2,
  336.       'I liked it!',
  337.       8,
  338.       TO_DATE( '2010-11-23', 'YYYY-MM-DD')
  339.    )
  340. ;
  341. INSERT INTO
  342.    reviews ( movie_id, review, rating, date_r )
  343. VALUES
  344.    (
  345.       3,
  346.       'Great movie!',
  347.       9,
  348.       TO_DATE('2019-01-01', 'YYYY-MM-DD')
  349.    )
  350. ;
  351. INSERT INTO
  352.    reviews ( movie_id, review, rating, date_r )
  353. VALUES
  354.    (
  355.       3,
  356.       'Awesome!',
  357.       10,
  358.       TO_DATE('2019-01-02', 'YYYY-MM-DD')
  359.    )
  360. ;
  361. INSERT INTO
  362.    reviews ( movie_id, review, rating, date_r )
  363. VALUES
  364.    (
  365.       4,
  366.       'Pretty good!',
  367.       9,
  368.       TO_DATE( '2010-11-22', 'YYYY-MM-DD')
  369.    )
  370. ;
  371. INSERT INTO
  372.    reviews ( movie_id, review, rating, date_r )
  373. VALUES
  374.    (
  375.       4,
  376.       'I liked it!',
  377.       8,
  378.       TO_DATE( '2010-11-23', 'YYYY-MM-DD')
  379.    )
  380. ;
  381. INSERT INTO
  382.    reviews ( movie_id, review, rating, date_r )
  383. VALUES
  384.    (
  385.       5,
  386.       'Great movie!',
  387.       9,
  388.       TO_DATE( '2019-01-01', 'YYYY-MM-DD')
  389.    )
  390. ;
  391. INSERT INTO
  392.    reviews ( movie_id, review, rating, date_r )
  393. VALUES
  394.    (
  395.       5,
  396.       'Awesome!',
  397.       10,
  398.       TO_DATE('2019-01-02', 'YYYY-MM-DD')
  399.    )
  400. ;
  401. -- inserts for movieActors
  402. INSERT INTO
  403.    movieactors ( movie_id, actor_id )
  404. VALUES
  405.    (
  406.       1,
  407.       1
  408.    )
  409. ;
  410. INSERT INTO
  411.    movieactors ( movie_id, actor_id )
  412. VALUES
  413.    (
  414.       1,
  415.       2
  416.    )
  417. ;
  418. INSERT INTO
  419.    movieactors ( movie_id, actor_id )
  420. VALUES
  421.    (
  422.       2,
  423.       3
  424.    )
  425. ;
  426. INSERT INTO
  427.    movieactors ( movie_id, actor_id )
  428. VALUES
  429.    (
  430.       2,
  431.       4
  432.    )
  433. ;
  434. INSERT INTO
  435.    movieactors ( movie_id, actor_id )
  436. VALUES
  437.    (
  438.       3,
  439.       4
  440.    )
  441. ;
  442. INSERT INTO
  443.    movieactors ( movie_id, actor_id )
  444. VALUES
  445.    (
  446.       3,
  447.       5
  448.    )
  449. ;
  450. INSERT INTO
  451.    movieactors ( movie_id, actor_id )
  452. VALUES
  453.    (
  454.       4,
  455.       6
  456.    )
  457. ;
  458. INSERT INTO
  459.    movieactors ( movie_id, actor_id )
  460. VALUES
  461.    (
  462.       4,
  463.       7
  464.    )
  465. ;
  466. INSERT INTO
  467.    movieactors ( movie_id, actor_id )
  468. VALUES
  469.    (
  470.       5,
  471.       8
  472.    )
  473. ;
  474. INSERT INTO
  475.    movieactors ( movie_id, actor_id )
  476. VALUES
  477.    (
  478.       5,
  479.       9
  480.    )
  481. ;
  482. END
  483. ;
  484. -- TRIGGERS
  485. -- insert, update, delete triggers
  486. CREATE
  487. OR REPLACE TRIGGER movies_log AFTER INSERT
  488. OR
  489. UPDATE
  490.    OR
  491.    DELETE
  492.       ON movies FOR EACH ROW
  493.       BEGIN
  494.          IF inserting
  495.       THEN
  496.          INSERT INTO
  497.             LOG ( table_name, action, date_l )
  498.          VALUES
  499.             (
  500.                'movies', 'insert', SYSDATE
  501.             )
  502. ;
  503. ELSIF updating
  504. THEN
  505.    INSERT INTO
  506.       LOG ( table_name, action, date_l )
  507.    VALUES
  508.       (
  509.          'movies', 'update', SYSDATE
  510.       )
  511. ;
  512. ELSIF deleting
  513. THEN
  514.    INSERT INTO
  515.       LOG ( table_name, action, date_l )
  516.    VALUES
  517.       (
  518.          'movies', 'delete', SYSDATE
  519.       )
  520. ;
  521.       END
  522.       IF;
  523. END
  524. ;
  525. CREATE
  526. OR REPLACE TRIGGER actors_log AFTER INSERT
  527. OR
  528. UPDATE
  529.    OR
  530.    DELETE
  531.       ON actors FOR EACH ROW
  532.       BEGIN
  533.          IF inserting
  534.       THEN
  535.          INSERT INTO
  536.             LOG ( table_name, action, date_l )
  537.          VALUES
  538.             (
  539.                'actors', 'insert', SYSDATE
  540.             )
  541. ;
  542. ELSIF updating
  543. THEN
  544.    INSERT INTO
  545.       LOG ( table_name, action, date_l )
  546.    VALUES
  547.       (
  548.          'actors', 'update', SYSDATE
  549.       )
  550. ;
  551. ELSIF deleting
  552. THEN
  553.    INSERT INTO
  554.       LOG ( table_name, action, date_l )
  555.    VALUES
  556.       (
  557.          'actors', 'delete', SYSDATE
  558.       )
  559. ;
  560.       END
  561.       IF;
  562. END
  563. ;
  564. CREATE
  565. OR REPLACE TRIGGER studios_log AFTER INSERT
  566. OR
  567. UPDATE
  568.    OR
  569.    DELETE
  570.       ON studios FOR EACH ROW
  571.       BEGIN
  572.          IF inserting
  573.       THEN
  574.          INSERT INTO
  575.             LOG ( table_name, action, date_l )
  576.          VALUES
  577.             (
  578.                'studios', 'insert', SYSDATE
  579.             )
  580. ;
  581. ELSIF updating
  582. THEN
  583.    INSERT INTO
  584.       LOG ( table_name, action, date_l )
  585.    VALUES
  586.       (
  587.          'studios', 'update', SYSDATE
  588.       )
  589. ;
  590. ELSIF deleting
  591. THEN
  592.    INSERT INTO
  593.       LOG ( table_name, action, date_l )
  594.    VALUES
  595.       (
  596.          'studios', 'delete', SYSDATE
  597.       )
  598. ;
  599.       END
  600.       IF;
  601. END
  602. ;
  603. CREATE
  604. OR REPLACE TRIGGER reviews_log AFTER INSERT
  605. OR
  606. UPDATE
  607.    OR
  608.    DELETE
  609.       ON reviews FOR EACH ROW
  610.       BEGIN
  611.          IF inserting
  612.       THEN
  613.          INSERT INTO
  614.             LOG ( table_name, action, date_l )
  615.          VALUES
  616.             (
  617.                'reviews', 'insert', SYSDATE
  618.             )
  619. ;
  620. ELSIF updating
  621. THEN
  622.    INSERT INTO
  623.       LOG ( table_name, action, date_l )
  624.    VALUES
  625.       (
  626.          'reviews', 'update', SYSDATE
  627.       )
  628. ;
  629. ELSIF deleting
  630. THEN
  631.    INSERT INTO
  632.       LOG ( table_name, action, date_l )
  633.    VALUES
  634.       (
  635.          'reviews', 'delete', SYSDATE
  636.       )
  637. ;
  638.       END
  639.       IF;
  640. END
  641. ;
  642. CREATE
  643. OR REPLACE TRIGGER movieactors_log AFTER INSERT
  644. OR
  645. UPDATE
  646.    OR
  647.    DELETE
  648.       ON movieactors FOR EACH ROW
  649.       BEGIN
  650.          IF inserting
  651.       THEN
  652.          INSERT INTO
  653.             LOG ( table_name, action, date_l )
  654.          VALUES
  655.             (
  656.                'movieActors', 'insert', SYSDATE
  657.             )
  658. ;
  659. ELSIF updating
  660. THEN
  661.    INSERT INTO
  662.       LOG ( table_name, action, date_l )
  663.    VALUES
  664.       (
  665.          'movieActors', 'update', SYSDATE
  666.       )
  667. ;
  668. ELSIF deleting
  669. THEN
  670.    INSERT INTO
  671.       LOG ( table_name, action, date_l )
  672.    VALUES
  673.       (
  674.          'movieActors', 'delete', SYSDATE
  675.       )
  676. ;
  677.       END
  678.       IF;
  679. END
  680. ;
  681. CREATE
  682. OR REPLACE TRIGGER directors_log AFTER INSERT
  683. OR
  684. UPDATE
  685.    OR
  686.    DELETE
  687.       ON directors FOR EACH ROW
  688.       BEGIN
  689.          IF inserting
  690.       THEN
  691.          INSERT INTO
  692.             LOG ( table_name, action, date_l )
  693.          VALUES
  694.             (
  695.                'directors', 'insert', SYSDATE
  696.             )
  697. ;
  698. ELSIF updating
  699. THEN
  700.    INSERT INTO
  701.       LOG ( table_name, action, date_l )
  702.    VALUES
  703.       (
  704.          'directors', 'update', SYSDATE
  705.       )
  706. ;
  707. ELSIF deleting
  708. THEN
  709.    INSERT INTO
  710.       LOG ( table_name, action, date_l )
  711.    VALUES
  712.       (
  713.          'directors', 'delete', SYSDATE
  714.       )
  715. ;
  716.       END
  717.       IF;
  718. END
  719. ;
  720. -- create sequence
  721. CREATE SEQUENCE log_sequence;
  722. -- create trigger
  723. CREATE
  724. OR REPLACE TRIGGER log_trigger BEFORE INSERT
  725. ON LOG FOR EACH ROW
  726. BEGIN
  727.    SELECT
  728.       log_sequence.NEXTVAL INTO :NEW.id
  729.    FROM
  730.       dual;
  731. END
  732. ;
  733. -- CSOMAGOK
  734. --egy csomag ami a módosítókat tartalmazza, insert, update, delete
  735. CREATE
  736. OR REPLACE PACKAGE modifiers AS FUNCTION berak(table_name VARCHAR2, micsoda VARCHAR2) RETURN NUMBER;
  737. FUNCTION frissit(table_name VARCHAR2, micsoda VARCHAR2) RETURN NUMBER;
  738. FUNCTION kivesz(table_name VARCHAR2, micsoda VARCHAR2) RETURN NUMBER;
  739. END
  740. ;
  741. CREATE
  742. OR REPLACE PACKAGE BODY modifiers AS FUNCTION berak(table_name VARCHAR2, micsoda VARCHAR2) RETURN NUMBER IS sql0 VARCHAR2(1000);
  743. BEGIN
  744.    sql0 := 'insert into ' || table_name || ' values (' || micsoda || ')';
  745. EXECUTE IMMEDIATE sql0;
  746. RETURN SQL % rowcount;
  747. END
  748. ;
  749. FUNCTION frissit(table_name VARCHAR2, micsoda VARCHAR2) RETURN NUMBER IS sql0 VARCHAR2(1000);
  750. BEGIN
  751.    sql0 := 'update ' || table_name || ' set ' || micsoda;
  752. EXECUTE IMMEDIATE sql0;
  753. RETURN SQL % rowcount;
  754. END
  755. ;
  756. FUNCTION kivesz(table_name VARCHAR2, micsoda VARCHAR2) RETURN NUMBER IS sql0 VARCHAR2(1000);
  757. BEGIN
  758.    sql0 := 'delete from ' || table_name || ' where ' || micsoda;
  759. EXECUTE IMMEDIATE sql0;
  760. RETURN SQL % rowcount;
  761. END
  762. ;
  763. END
  764. ;
  765. -- például
  766. BEGIN
  767.    DBMS_OUTPUT.put_line(modifiers.berak('movies', '1, 1, 1, 1, 1, 1, 1, 1, 1, 1'));
  768. DBMS_OUTPUT.put_line(modifiers.frissit('movies', 'id = 1, title = ''asd'''));
  769. DBMS_OUTPUT.put_line(modifiers.kivesz('reviews', 'id = 5'));
  770. END
  771. ;
  772. -- egy csomag ami mindenféle selecteket tartalmaz
  773. CREATE
  774. OR REPLACE PACKAGE queries AS PROCEDURE dynamic_select_5(table_name2 VARCHAR2);
  775. PROCEDURE directormovies(director_name CHAR);
  776. PROCEDURE movie_count_with_higher_rating(rating_be NUMBER);
  777. END
  778. ;
  779. CREATE
  780. OR REPLACE PACKAGE BODY queries AS PROCEDURE dynamic_select_5( table_name2 VARCHAR2) IS TYPE cur_typ IS REF CURSOR;
  781. c CUR_TYP;
  782. query_str CHAR(2000);
  783. str_1 VARCHAR2(200);
  784. str_2 VARCHAR2(200);
  785. str_3 VARCHAR2(200);
  786. str_4 VARCHAR2(200);
  787. str_5 VARCHAR2(200);
  788. sql_all VARCHAR2(1000);
  789. sql_5 VARCHAR2(1000);
  790. BEGIN
  791.    SELECT
  792.       listagg(column_name , ', ') INTO sql_all
  793.    FROM
  794.       user_tab_columns
  795.    WHERE
  796.       table_name = table_name2;
  797. SELECT
  798.    regexp_substr(sql_all, '[^,]+,[^,]+,[^,]+,[^,]+,[^,]+') "REGEXP_SUBSTR" INTO sql_5
  799. FROM
  800.    dual;
  801. DBMS_OUTPUT.Put_line(sql_5);
  802. query_str := 'SELECT ' || sql_5 || ' FROM ' || table_name2;
  803. OPEN c FOR query_str;
  804. LOOP FETCH c INTO str_1,
  805. str_2,
  806. str_3,
  807. str_4,
  808. str_5;
  809. EXIT
  810. WHEN
  811.    c % NOTFOUND;
  812. DBMS_OUTPUT.Put_line(str_1 || ' ' || str_2 || ' ' || str_3 || ' ' || str_4 || ' ' || str_5);
  813. END
  814. LOOP;
  815. CLOSE c;
  816. EXCEPTION
  817. WHEN
  818.    OTHERS
  819. THEN
  820.    DBMS_OUTPUT.Put_line('Error, nincs ilyen tabla');
  821. END
  822. ;
  823. PROCEDURE directormovies (director_name IN CHAR) AS CURSOR cur IS
  824. SELECT
  825.    title,
  826.    YEAR
  827. FROM
  828.    movies
  829.    inner join
  830.       directors
  831.       ON movies.director = directors.id
  832. WHERE
  833.    directors.name LIKE director_name || '%';
  834. cv cur % ROWTYPE;
  835. BEGIN
  836.    OPEN cur;
  837. FETCH cur INTO cv;
  838. IF cur % NOTFOUND
  839. THEN
  840.    DBMS_OUTPUT.Put_line('Nincs ' || director_name || ' rendezoju film!');
  841. ELSE
  842.    DBMS_OUTPUT.put_line('Cim: ' || cv.title || ' Ev: ' || cv.YEAR);
  843. LOOP FETCH cur INTO cv;
  844. EXIT
  845. WHEN
  846.    cur % NOTFOUND;
  847. DBMS_OUTPUT.put_line('Cim: ' || cv.title || ' Ev: ' || cv.YEAR);
  848. END
  849. LOOP;
  850. END
  851. IF;
  852. CLOSE cur;
  853. EXCEPTION
  854. WHEN
  855.    OTHERS
  856. THEN
  857.    DBMS_OUTPUT.Put_line('Error, nincs ilyen rendezo');
  858. END
  859. ;
  860. PROCEDURE movie_count_with_higher_rating (rating_be IN NUMBER) AS CURSOR cur IS
  861. SELECT
  862.    COUNT(*) AS db
  863. FROM
  864.    movies
  865. WHERE
  866.    rating > rating_be;
  867. cv cur % ROWTYPE;
  868. BEGIN
  869.    OPEN cur;
  870. FETCH cur INTO cv;
  871. IF (cv.db = 0)
  872. THEN
  873.    DBMS_OUTPUT.Put_line('Nincs olyan film ami ' || rating_be || ' pontal tobbet kapott volna!');
  874. ELSE
  875.    DBMS_OUTPUT.Put_line('Ennel magasabb ratingu filmek szama: ' || cv.db);
  876. END
  877. IF;
  878. CLOSE cur;
  879. EXCEPTION
  880. WHEN
  881.    OTHERS
  882. THEN
  883.    DBMS_OUTPUT.Put_line('Error');
  884. END
  885. ;
  886. END
  887. ;
  888. --Például
  889. BEGIN
  890.    queries.directormovies('Frank Darabont');
  891. END
  892. ;
  893.  
  894.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement