Expert
Q: | |
29-28. | The matches are:
|
Q: | |
29-29. | There are several possible ways to improve the program. The following optimization eliminates the nested loops by accumulating the schedule in reverse, resulting in a program that is both faster and easier to understand (note that there are several versions on the book’s web page): /* Filename on web page: presvalue.sql */ PROCEDURE build_lease_schedule IS pv_total_lease NUMBER (9) := 0; one_year_pv NUMBER (9) := 0; BEGIN fixed_count := 0; var_count := 0; FOR year_count IN REVERSE 1 .. 20 LOOP one_year_pv := pv_of_fixed (year_count) + pv_of_variable (year_count); pv_total_lease := pv_total_lease + one_year_pv; pv_table (year_count) := pv_total_lease; END LOOP; END; |
Q: | |
29-30. | You can create an anonymous PL/SQL block within an IF statement to declare and use memory only when necessary: PROCEDURE only_as_needed (...) IS BEGIN IF <condition> THEN DECLARE big_string VARCHAR2(32767) := ten_minute_lookup (...); big_list list_types.big_strings_tt; BEGIN use_big_string (big_string); Process_big_list (big_list); END; ELSE /* Nothing big going on here */ ... END IF; END; |
Q: | |
29-31. | You can use native dynamic SQL to easily change the status of a trigger: /* Filename on web page: settrig_status.sp */ CREATE OR REPLACE PROCEDURE settrig (tab ... |
Get Oracle PL/SQL Programming: A Developer's Workbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.