# # Oracle Performance Tuning Chapter 8 p. 134-135 # DECLARE SAL_VAL NUMBER; TAX_VAL NUMBER; BEGIN SAL_VAL := :BLK.EMP_SAL; IF SQL_VAL <= 2000 THEN INT_VAL := 0; END IF; IF SAL_VAL >= 2001 AND SQL_VAL <= 8000 THEN INT_VAL := (SAL_VAL * 15 ) / 100; END IF; IF SAL_VAL >= 8001 THEN INT_VAL := (SAL_VAL * 25 ) / 100; END IF; :BLK.EMP_INT := INT_VAL; END; # # Oracle Performance Tuning Chapter 8 p. 137 # PROCEDURE SYSTEM_ERROR (MSG_NO IN NUMBER) IS BEGIN DECLARE TXT CHAR (65) . . . CURSOR C1 IS SELECT MSG_TEXT FROM SYSTEM_MESSAGES WHERE MSG_NO = MSG_NO; BEGIN OPEN C1; FETCH C1 INTO TXT; . . . IF C1%NOTFOUND THEN MESSAGE ( 'INVALID MESSAGE NUMBER - ' || TO_CHAR (MSG_NO )); ELSE MESSAGE ( TXT ); END IF; . . . BELL; RAISE FORM_TRIGGER_FAILURE; END; END; # # Oracle Performance Tuning Chapter 8 p. 138 # DECLARE LOOP_NO NUMBER := 0; BEGIN . . . WHILE LOOP_NO <= 10 LOOP . . . IF ABC > XYZ THEN GOTO EXIT_LABEL; END IF; . . . END LOOP; . . . <> NULL; END; # # Oracle Performance Tuning Chapter 8 p. 139 # DECLARE CURSOR C IS SELECT EMP_NAME FROM EMP WHERE EMP_NO = 1234; BEGIN OPEN C; FETCH C INTO . . . ; CLOSE C; END; # SELECT EMP_NAME INTO :BLK.EMP_NAME FROM EMP WHERE EMP_NO = 1234; # # Oracle Performance Tuning Chapter 8 p. 140 # KEY-STARTUP : BEGIN UPDATE USER_FORM SET CURR_FORM = "XXXXXX:, FORM_TIME = SYSDATE WHERE USER_CODE = USER; :SYSTEM.MESSAGE_LEVEL := 25; COMMIT; :SYSTEM.MESSAGE_LEVEL := 0; END; # # Oracle Performance Tuning Chapter 8 p. 140-141 # UPDATE ACCOUNT_TOTALS A SET CURRENT_EXP = CURRENT_EXP + ( SELECT DAILY_EXP FROM TRANSACTION T WHERE T.ACC_NO = A.ACC_NO ) WHERE EXISTS ( SELECT 'X' FROM TRANSACTION T WHERE T.ACC_NO = A.ACC_NO ); # # Oracle Performance Tuning Chapter 8 p. 141 # DECLARE CURSOR READ_TRAN IS SELECT ACC_NO, DAILY_EXP FROM TRANSACTION; ACC_NO_STORE NUMBER (6); DAILY_EXP_STORE NUMBER (9,2); BEGIN OPEN READ_TRAN; LOOP FETCH READ_TRAN INTO ACC_NO_STORE, DAILY_EXP_STORE; EXIT WHEN READ_TRAN%NOTFOUND; UPDATE ACCOUNT_TOTALS A SET CURRENT_EXP = CURRENT_EXP + DAILY_EXP_STORE WHERE ACC_NO = ACC_NO_STORE ; END LOOP; END;