In Oracle it is possible to access collections within SQL statements.
With the following collection:
CREATE TYPE region_tab AS TABLE OF VARCHAR2(2) /And the following table and data
desc regions Name Null? Type ----------------------------------------------------- -------- ------------------------------ SHORT_CODE VARCHAR2(2) NAME VARCHAR2(70) SELECT * from regions ; SH NAME -- ----------------------------------------- SE South East WM West Midlands SW South West NE North EastWe can write the code below which populates the collection with the short_codes of 'WM' and 'SW' and then use a SQL statement to read the collection and find the corresponding regions.name. This is possible through the use of the collection condition MEMBER OF
DECLARE
CURSOR c1
(pl_region_tab region_tab)
IS
SELECT name
FROM regions
WHERE short_code MEMBER OF pl_region_tab ;
l_region_tab region_tab := region_tab ();
BEGIN
-- add values to collection
l_region_tab.EXTEND ;
l_region_tab(1) := 'WM' ;
l_region_tab.EXTEND ;
l_region_tab(2) := 'SW' ;
FOR c1_rec IN c1 (l_region_tab)
LOOP
dbms_output.put_line ('Region name : ' || c1_rec.name) ;
END LOOP ;
END ;
/
Region name : West Midlands
Region name : South West
PL/SQL procedure successfully completed.
For completeness the ddl / dml for the table is:
CREATE TABLE regions
(short_code VARCHAR2(2),
name VARCHAR(70)
)
/
INSERT INTO regions (short_code, name) VALUES ('SE', 'South East') ;
INSERT INTO regions (short_code, name) VALUES ('WM', 'West Midlands') ;
INSERT INTO regions (short_code, name) VALUES ('SW', 'South West') ;
INSERT INTO regions (short_code, name) VALUES ('NE', 'North East') ;
COMMIT ;
No comments:
Post a Comment