Documente Academic
Documente Profesional
Documente Cultură
and Inserts in
Oracle 9i & 10g
Simay Alpöge
SQL
DATA
In-Bind binding.
INSERT or UPDATE
Out-Bind binding.
RETURNING clause
April 14, 2004 Next Information Systems 4
SELECT / FETCH statements
Data may be Bulk Collected/Fetched into :
Table.column%TYPE – 8i and above
CURSOR c1 IS
SELECT customer_account_id FROM Customer
WHERE effective_date BETWEEN
TO_DATE(’01-JAN-2004’, ‘DD-MON-RRRR’) AND
TRUNC(SYSDATE);
BEGIN
OPEN c1;
FETCH c1 BULK COLLECT INTO Custs;
CLOSE c1;
END;
BEGIN
SELECT Customer_Account_Id, Effective_Date,
Expired_Date
BULK COLLECT INTO Custs
FROM Customers_Active
WHERE Effective_date BETWEEN
TO_DATE(’01-JAN-2004’ , ‘DD-MON-RRRR’) AND
TRUNC(SYSDATE);
END;
BEGIN
OPEN c1;
LOOP
FETCH c1 BULK COLLECT INTO Custs LIMIT 100;
EXIT WHEN c1%NOTFOUND;
END LOOP;
END ;
April 14, 2004 Next Information Systems 10
FETCH statement: Array Of Records
DECLARE
TYPE CustRec IS RECORD
(R_Customer_Account_id Customer.Customer_Account_id%TYPE,
R_Effective_Date Customer.Effective_Date%TYPE,
R_Expired_Date Customer.Expired_Date%TYPE);
CURSOR c1 IS
SELECT Customer_Account_Id, Effective_Date, Expired_Date
FROM Customer;
BEGIN
OPEN c1;
FETCH c1 BULK COLLECT INTO Cust_Recs LIMIT v_Array_Size;
CLOSE c1;
END;
April 14, 2004 Next Information Systems 11
FETCH statement
Nested Tables
CREATE TYPE Coords AS OBJECT (x NUMBER, y NUMBER);
DECLARE
TYPE CoordsTab IS TABLE OF Coords;
pairs CoordsTab;
BEGIN
SELECT loc BULK COLLECT INTO pairs FROM grid; -- now pairs contains
(1,2) and (3,4)
END;
SAVE EXCEPTIONS
SQL%BULK_EXCEPTIONS(i).ERROR_INDEX – stores
itireration when exception is raised.
BEGIN
DELETE FROM Acct_Install
WHERE INSTALL_DATE =
TRUNC(TO_DATE(’01-jan-1970’,’DD-MON-RRRR’)
RETURNING Customer_Account_Id
BULK COLLECT INTO Acusts;
END;
• FORALL
• RETURNING INTO
• USING
• COLLECT INTO
Custnos CustList;
Custnames NameList;
EXPIRED_CUSTS A_INDX;
ACTIVE_CUSTS A_INDX;
V_I BINARY_INTEGER
BEGIN
END;
BEGIN
FORALL V_ I VALUES OF EXPIRED_CUSTS
SAVE EXCEPTIONS
INSERT INTO CUSTOMER_HISTORY
VALUES
(CUSTIDS (V_I), PHONES(V_I), EFFDTS(V_I), EXPDTS(V_);
FORALL V_ I VALUES OF ACTIVE_CUSTS
SAVE EXCEPTIONS
INSERT INTO CUSTOMER_ACTIVE
VALUES
(CUSTIDS (V_I), PHONES(V_I), EFFDTS(V_I), EXPDTS(V_);
COMMIT;
END;
dbasig@nyoug.org
alpoge@nextinfosys.com