To answer this question, let's go through each option to understand why it is correct or incorrect:
Option A) An exception cannot propagate across remote procedure calls. - This option is true. When a remote procedure call is made, any exceptions raised within the remote procedure will not propagate back to the calling procedure.
Option B) An exception raised inside a declaration immediately propagates to the current block. - This option is incorrect. Exceptions raised inside a declaration do not immediately propagate to the current block. They need to be explicitly handled or propagated using appropriate exception handling mechanisms.
Option C) The use of the RAISE; statement in an exception handler reprises the current exception. - This option is true. The RAISE statement in an exception handler can be used to re-raise the current exception, allowing it to propagate to higher-level exception handlers or enclosing blocks.
Option D) An exception raised inside an exception handler immediately propagates to the enclosing block. - This option is true. When an exception is raised inside an exception handler, it immediately propagates to the enclosing block, allowing it to be handled or propagated further.
Based on the explanations above, the correct options are A, C, and D.