Advertisement
rejcsibejcsi

PL/SQL

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