A dynamic SQL statement can be executed immediately only if it meets the following criteria:
It does not return fetchable data (it is not a select statement).
It does not contain placeholders for parameters (indicated by a question mark (?) in the text of the statement).
Dynamic parameter markers act as placeholders that allow users to specify actual data to be substituted into a SQL statement at run time.
Generally, you should use the execute-immediate method when the application executes a statement only once. Using the execute-immediate method, an application can execute a statement more than once, but this method incurs the overhead associated with repeated statement preparations.