Problem - Explicit Cursor
Write a PL/SQL program that uses an explicit cursor to retrieve and display the details of all books from the
BOOKS table where the PRICE is greater than 500. The program should display the following information for each qualifying book:
- BOOK_ID
- TITLE
- AUTHOR
- CATEGORY
- PRICE
Expected Output (Sample)
Sample result layout when the PL/SQL program is executed:
| BOOK_ID | TITLE | AUTHOR | CATEGORY | PRICE |
|---|---|---|---|---|
| 201 | Bangladesher Itihash | Sirajul Islam | History | 750 |
| 202 | Chharar Puthi | Sukumar Ray | Literature | 600 |
| 203 | Amar Bangladesh | Humayun Azad | Essay | 850 |
| 204 | Shesher Kobita | Rabindranath Tagore | Novel | 950 |
PL/SQL Program (Explicit Cursor)
Ensure SET SERVEROUTPUT ON is enabled.
-- Create BOOKS table
CREATE TABLE BOOKS (
BOOK_ID NUMBER(5) PRIMARY KEY,
TITLE VARCHAR2(100) NOT NULL,
AUTHOR VARCHAR2(100),
CATEGORY VARCHAR2(50),
PRICE NUMBER(8,2)
);
-- Insert demo data
INSERT INTO BOOKS (BOOK_ID, TITLE, AUTHOR, CATEGORY, PRICE) VALUES
(201, 'Bangladesher Itihash', 'Sirajul Islam', 'History', 750);
INSERT INTO BOOKS (BOOK_ID, TITLE, AUTHOR, CATEGORY, PRICE) VALUES
(202, 'Chharar Puthi', 'Sukumar Ray', 'Literature', 600);
INSERT INTO BOOKS (BOOK_ID, TITLE, AUTHOR, CATEGORY, PRICE) VALUES
(203, 'Amar Bangladesh', 'Humayun Azad', 'Essay', 850);
INSERT INTO BOOKS (BOOK_ID, TITLE, AUTHOR, CATEGORY, PRICE) VALUES
(204, 'Shesher Kobita', 'Rabindranath Tagore', 'Novel', 950);
INSERT INTO BOOKS (BOOK_ID, TITLE, AUTHOR, CATEGORY, PRICE) VALUES
(205, 'Programming in C', 'E. Balagurusamy', 'Programming', 450); -- won't appear in PL/SQL (price < 500)
COMMIT;
SET SERVEROUTPUT ON;
DECLARE
CURSOR book_cur IS
SELECT BOOK_ID, TITLE, AUTHOR, CATEGORY, PRICE
FROM BOOKS
WHERE PRICE > 500
ORDER BY BOOK_ID;
v_book_id BOOKS.BOOK_ID%TYPE;
v_title BOOKS.TITLE%TYPE;
v_author BOOKS.AUTHOR%TYPE;
v_category BOOKS.CATEGORY%TYPE;
v_price BOOKS.PRICE%TYPE;
BEGIN
OPEN book_cur;
LOOP
FETCH book_cur INTO v_book_id, v_title, v_author, v_category, v_price;
EXIT WHEN book_cur%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('BOOK_ID : ' || v_book_id);
DBMS_OUTPUT.PUT_LINE('TITLE : ' || NVL(v_title, 'NULL'));
DBMS_OUTPUT.PUT_LINE('AUTHOR : ' || NVL(v_author, 'NULL'));
DBMS_OUTPUT.PUT_LINE('CATEGORY : ' || NVL(v_category, 'NULL'));
DBMS_OUTPUT.PUT_LINE('PRICE : ' || v_price);
DBMS_OUTPUT.PUT_LINE('----------------------------------------');
END LOOP;
CLOSE book_cur;
END;
/
কোন মন্তব্য নেই:
একটি মন্তব্য পোস্ট করুন