Multiple choice technology databases

SET SERVEROUTPUT ON; DECLARE stock_price NUMBER := 9.73; net_earnings NUMBER := 0; pe_ratio NUMBER; BEGIN -- Calculation might cause division-by-zero error. pe_ratio := stock_price / net_earnings; dbms_output.put_line('Price/earnings ratio = ' || pe_ratio); EXCEPTION -- exception handlers begin -- Only one of the WHEN blocks is executed. WHEN ZERO_DIVIDE THEN -- handles 'division by zero' error dbms_output.put_line('Company must have had zero earnings.'); pe_ratio := null; WHEN OTHERS THEN -- handles all other errors dbms_output.put_line('Some other kind of error occurred.'); pe_ratio := null; END; -- exception handlers and block end here What will be outcome of this program block?

  1. It will print the value of divide operation

  2. When others exception will be executed as we can't concatenate number with a string in dbms_output statement directlt. We have to use to_char to convert it as varchar2

  3. WHEN ZERO_DIVIDE will be executed

  4. When others exception will be executed as pe_ratio is not initialized.

Reveal answer Fill a bubble to check yourself
C Correct answer
Explanation

Dividing by zero raises the predefined ZERO_DIVIDE exception, which is caught by the first WHEN clause. The program prints the custom message from that handler and sets pe_ratio to NULL. Therefore the option stating that ZERO_DIVIDE will be executed is correct, matching the stored answer.