What is the difference between syntax error and runtime error?

A syntax error can be easily detected by a PL/SQL compiler. For example: incorrect spelling etc. while, a runtime error is handled with the help of exception-handling section in a PL/SQL block. For example: SELECT INTO statement, which does not return any rows.

In PL/SQL, as in many programming languages, the difference between syntax error and runtime error is fundamental to understanding and debugging code. Let’s clarify each term:

  1. Syntax Error:
    • Definition: A syntax error occurs when the structure of your code violates the rules of the programming language.
    • Cause: It is typically caused by incorrect placement of keywords, missing or misplaced punctuation, or using language elements in an inappropriate way.
    • Detection: Syntax errors are detected by the compiler or interpreter during the compilation phase, before the program is executed.
    • Example: Missing a semicolon at the end of a statement, using an undeclared variable, or mismatched parentheses.
    -- Example of a syntax error
    DECLARE
    x NUMBER -- Missing semicolon
    BEGIN
    DBMS_OUTPUT.PUT_LINE('Hello, World!');
    END;

    In this example, a syntax error occurs due to the missing semicolon after x NUMBER.

  2. Runtime Error:
    • Definition: A runtime error occurs during the execution of a program, and it indicates that the program’s logic is incorrect or that something unexpected has happened.
    • Cause: These errors are often related to issues such as dividing by zero, attempting to access an array element that doesn’t exist, or trying to open a file that doesn’t exist.
    • Detection: Runtime errors are detected while the program is running. They are not caught during the compilation phase but rather when the problematic code is executed.
    • Example: Attempting to divide a number by zero.
    -- Example of a runtime error
    DECLARE
    x NUMBER := 10;
    y NUMBER := 0;
    result NUMBER;
    BEGIN
    result := x / y; -- Division by zero
    DBMS_OUTPUT.PUT_LINE('Result: ' || result);
    END;

    In this example, a runtime error occurs when attempting to divide x by y since y is zero.

In summary, syntax errors are detected by the compiler or interpreter during the compilation phase and are related to the structure of the code. Runtime errors, on the other hand, occur during the execution of the program and are often caused by logical mistakes or unexpected situations.