Please excuse the basic nature of these questions - I'm just starting off.
This example is taken from Oracle PL/SQL 101 - Osborne/McGraw-Hill - ISBN
0-07-212606-X - page 314
Numbers to the left are line numbers for reference only. Hopefully I haven't
made any typing mistakes.
1. DECLARE
2. CURSOR product_cur IS
3. SELECT * FROM plsql101_produc t
4. FOR UPDATE OF product_price;
5. BEGIN
6. FOR product_rec IN product_cur
7. LOOP
8. UPDATE plsql101_produc t
9. SET product_price = (product_rec.pr oduct_price =
0.97)
10. WHERE CURRENT OF product_cur
11. END LOOP;
12. END;
Am I correct to say the following?
The way a cursor works is that once a record is fetched it is taken out of
the cursor. This works well until the last record is reached at which time
fetch will continue to return the last record in the cursor unless you use
the %FOUND and %NOTFOUND constructs to test for the last record?
The cursor loop used in the above example eliminates the need to open, close
and fetch. It also eliminates the need to check for the last record.
There is no formal declaration of the cursor name "product_re c" first used
on line 6. Is this an example of an implicit cursor of table-based record
type?
On line 9 how does PL/SQL know that there is a product_price field in the
cursor record? Is this also part of the implicit cursor definition?
Thanks
J.
This example is taken from Oracle PL/SQL 101 - Osborne/McGraw-Hill - ISBN
0-07-212606-X - page 314
Numbers to the left are line numbers for reference only. Hopefully I haven't
made any typing mistakes.
1. DECLARE
2. CURSOR product_cur IS
3. SELECT * FROM plsql101_produc t
4. FOR UPDATE OF product_price;
5. BEGIN
6. FOR product_rec IN product_cur
7. LOOP
8. UPDATE plsql101_produc t
9. SET product_price = (product_rec.pr oduct_price =
0.97)
10. WHERE CURRENT OF product_cur
11. END LOOP;
12. END;
Am I correct to say the following?
The way a cursor works is that once a record is fetched it is taken out of
the cursor. This works well until the last record is reached at which time
fetch will continue to return the last record in the cursor unless you use
the %FOUND and %NOTFOUND constructs to test for the last record?
The cursor loop used in the above example eliminates the need to open, close
and fetch. It also eliminates the need to check for the last record.
There is no formal declaration of the cursor name "product_re c" first used
on line 6. Is this an example of an implicit cursor of table-based record
type?
On line 9 how does PL/SQL know that there is a product_price field in the
cursor record? Is this also part of the implicit cursor definition?
Thanks
J.
Comment