The difference between writing SQL statements directly in PL/SQL and using the execute immediate method is that when executing SQL statements in PL/SQL, you can directly write SQL statements or splice an SQL statement into a string, as shown below: select * from dual; v_ SQL: = 'select * from dual'; execute immediate v_ SQL; generally, the performance of writing SQL directly is higher than that of spelling strings, if the oracle mechanism is automatically mobilized internally to execute String concatenation, the system parses the string and maps it to an SQL statement before executing it. However, the SQL spelling method is advantageous. That is to say, an SQL statement is a string that can be dynamically spliced and changed based on different conditions. This is not achieved by Directly Writing SQL statements. Another benefit of SQL spelling is v_ SQL: = 'select * from tables t where t. c_date =: 1 and t. name =: 2'; execute immediate v_ SQL USING '000000', 'xiaoming'; dynamically transmits values to parameters, which is the biggest advantage. Define a variable v_date varchar2 in PL/SQL. If you write SQL directly, you can directly write the variable v_date. If it is a spelling SQL statement, it is v_ SQL: = 'select * from tables t where t. c_date = ''' | v_date | '''; in this way, the SQL statement printed during execution is select * from tables t where t. c_date = '000000' if it is v_ SQL: = 'select * from tables t where t. c_date = '| v_date | ''; the SQL statement printed during execution is select * from tables t where t. c_date = 20130304; here, if c_date is of the varchar2 type, oracle needs to implicitly convert numbers to strings, affecting performance.