Product check : Utility Package « Function Procedure Packages « Oracle PL/SQL Tutorial

Oracle PL/SQL Tutorial
1. Introduction
2. Query Select
3. Set
4. Insert Update Delete
5. Sequences
6. Table
7. Table Joins
8. View
9. Index
10. SQL Data Types
11. Character String Functions
12. Aggregate Functions
13. Date Timestamp Functions
14. Numerical Math Functions
15. Conversion Functions
16. Analytical Functions
17. Miscellaneous Functions
18. Regular Expressions Functions
19. Statistical Functions
20. Linear Regression Functions
21. PL SQL Data Types
22. PL SQL Statements
23. PL SQL Operators
24. PL SQL Programming
25. Cursor
26. Collections
27. Function Procedure Packages
28. Trigger
29. SQL PLUS Session Environment
30. System Tables Data Dictionary
31. System Packages
32. Object Oriented
33. XML
34. Large Objects
35. Transaction
36. User Privilege
Java
Java Tutorial
Java Source Code / Java Documentation
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Oracle PL/SQL Tutorial » Function Procedure Packages » Utility Package 
27. 27. 6. Product check
SQL>
SQL>
SQL> CREATE TABLE product
  2  (product_id                NUMBER(7),
  3   product_name              VARCHAR2(50),
  4   short_desc                VARCHAR2(255),
  5   longtext_id               NUMBER(7),
  6   image_id                  NUMBER(7),
  7   suggested_wholesale_price NUMBER(112),
  8   wholesale_units           VARCHAR2(25)
  9  );

Table created.

SQL>
SQL>
SQL> INSERT INTO product VALUES (10011'Product A', 'BOOT', 5181001150, NULL);

row created.

SQL> INSERT INTO product VALUES (10012'Product B', 'SKI', 5191002200, NULL);

row created.

SQL> INSERT INTO product VALUES (10013'Product C', 'SKI BOOT', 5201003410, NULL);

row created.

SQL> INSERT INTO product VALUES (10021'Product D', 'POLE', 528101116.25, NULL);

row created.

SQL> INSERT INTO product VALUES (10022'Product E', 'Cat', 529101221.95, NULL);

row created.

SQL> INSERT INTO product VALUES (10023'Product F', 'Dog', 530101340.95, NULL);

row created.

SQL> INSERT INTO product VALUES (20106'Product G', 'Bear', 613, NULL, 11, NULL);

row created.

SQL> INSERT INTO product VALUES (20108'Product H', 'BALL', 615, NULL, 28, NULL);

row created.

SQL> INSERT INTO product VALUES (20201'Product I', 'NET', 708, NULL, 123, NULL);

row created.

SQL> INSERT INTO product VALUES (20510'Product J', 'PADS, PAIR', 1017, NULL, 9, NULL);

row created.

SQL> INSERT INTO product VALUES (20512'Product K', 'PADS, PAIR', 1019, NULL, 8, NULL);

row created.

SQL>
SQL>
SQL>
SQL>
SQL> CREATE OR REPLACE PACKAGE procesproducts IS
  2     TYPE type_prod_table IS TABLE OF product%ROWTYPE
  3        INDEX BY BINARY_INTEGER;
  4     pvg_prod_table type_prod_table;
  5     PROCEDURE populate_prod_table;
  6     PROCEDURE check_product_id (p_prod_id_num product.product_id%TYPE);
  7     PROCEDURE check_product_name (p_prod_name_txt product.
  8        product_name%TYPE);
  9  END procesproducts;
 10  /

Package created.

SQL>
SQL>
SQL>
SQL> CREATE OR REPLACE PACKAGE BODY procesproducts IS
  2  PROCEDURE populate_prod_table IS
  3     CURSOR cur_product IS
  4        SELECT *
  5        FROM   product;
  6  BEGIN
  7     pvg_prod_table.DELETE;
  8     FOR lv_prod_rec IN cur_product LOOP
  9        pvg_prod_table(lv_prod_rec.product_id).product_id := lv_prod_rec.product_id;
 10        pvg_prod_table(lv_prod_rec.product_id).product_name := lv_prod_rec.product_name;
 11        pvg_prod_table(lv_prod_rec.product_id).short_desc := lv_prod_rec.short_desc;
 12        pvg_prod_table(lv_prod_rec.product_id).suggested_wholesale_price := lv_prod_rec.suggested_wholesale_price;
 13     END LOOP;
 14  EXCEPTION
 15     WHEN OTHERS THEN
 16        RAISE_APPLICATION_ERROR(-20100,
 17           'Error in procedure POPULATE_PROD_TABLE.', FALSE);
 18  END populate_prod_table;
 19
 20  PROCEDURE check_product_id(p_prod_id_num product.product_id%TYPEIS
 21  BEGIN
 22     IF pvg_prod_table.EXISTS(p_prod_id_numTHEN
 23        DBMS_OUTPUT.PUT_LINE('Product ID: ' ||
 24           pvg_prod_table(p_prod_id_num).product_id );
 25        DBMS_OUTPUT.PUT_LINE('Product Name: ' ||
 26           pvg_prod_table(p_prod_id_num).product_name );
 27        DBMS_OUTPUT.PUT_LINE('Description: ' ||
 28           pvg_prod_table(p_prod_id_num).short_desc );
 29        DBMS_OUTPUT.PUT_LINE('Wholesale Price: ' ||
 30           TO_CHAR(pvg_prod_table(p_prod_id_num).
 31           suggested_wholesale_price, '$9999.00'));
 32        DBMS_OUTPUT.PUT_LINE(CHR(10));
 33     ELSE
 34        DBMS_OUTPUT.PUT_LINE(TO_CHAR(p_prod_id_num|| ' is invalid.');
 35     END IF;
 36  EXCEPTION
 37     WHEN OTHERS THEN
 38        RAISE_APPLICATION_ERROR(-20102,
 39           'Error in procedure CHECK_PRODUCT_ID.', FALSE);
 40  END check_product_id;
 41  PROCEDURE check_product_name
 42     (p_prod_name_txt product.product_name%TYPEIS
 43     lv_index_num     NUMBER;
 44     lv_match_bln     BOOLEAN := FALSE;
 45  BEGIN
 46     IF pvg_prod_table.COUNT <> THEN
 47        lv_index_num := pvg_prod_table.FIRST;
 48        LOOP
 49           IF (INSTR(UPPER(pvg_prod_table(lv_index_num).product_name),UPPER(p_prod_name_txt)) 0THEN
 50              lv_match_bln := TRUE;
 51              DBMS_OUTPUT.PUT_LINE('Product ID: ' ||
 52                 pvg_prod_table(lv_index_num).product_id );
 53              DBMS_OUTPUT.PUT_LINE('Product Name: ' ||
 54                 pvg_prod_table(lv_index_num).product_name );
 55              DBMS_OUTPUT.PUT_LINE('Description: ' ||
 56                 pvg_prod_table(lv_index_num).short_desc );
 57              DBMS_OUTPUT.PUT_LINE('Wholesale Price: ' ||
 58                 TO_CHAR(pvg_prod_table(lv_index_num).
 59                 suggested_wholesale_price, '$9999.00'));
 60              DBMS_OUTPUT.PUT_LINE(CHR(10));
 61           END IF;
 62           EXIT WHEN (lv_index_num = pvg_prod_table.LASTOR
 63              lv_match_bln;
 64           lv_index_num := pvg_prod_table.NEXT(lv_index_num);
 65        END LOOP;
 66        IF NOT lv_match_bln THEN
 67           DBMS_OUTPUT.PUT_LINE('Product: ' || p_prod_name_txt ||
 68              ' is invalid.');
 69        END IF;
 70     ELSE
 71        DBMS_OUTPUT.PUT_LINE('There are no products in the table.');
 72     END IF;
 73  EXCEPTION
 74     WHEN OTHERS THEN
 75        RAISE_APPLICATION_ERROR(-20102,
 76           'Error in procedure CHECK_PRODUCT_NAME.', FALSE);
 77  END check_product_name;
 78
 79  end procesproducts;
 80  /

Package body created.

SQL> show error
No errors.
SQL>
SQL>
SQL> drop table product;

Table dropped.

SQL> drop package procesproducts;

Package dropped.
27. 27. Utility Package
27. 27. 1. Timer package
27. 27. 2. Match a date format
27. 27. 3. Validate all objects in a schema
27. 27. 4. Process date value
27. 27. 5. Get full name package
27. 27. 6. Product check
27. 27. 7. Check the code version
27. 27. 8. Audit package
27. 27. 9. Create a package to handle display, update, delete and insert operations
27. 27. 10. Counter package
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.