In PL/SQL, only dml SQL can be directly executed. Using the built-in dbms_ SQL package in Oracle, You can execute dynamic SQL statements (generate an SQL string at runtime, submit the string to the DBMS package for execution ).
Data manlpulation language: DML
Including:
Select, insert, delete, SET transaction, explain Plan
Data Definition Language: DDL
Including:
Drop, create, alter, Grant, revoke
Demo example:
Declare
V_sqlstr varchar2 (500 );
V_id number;
V_col varchar2 (50 );
Begin
V_sqlstr: = 'create table lab_temp (ID number, Col varchar2 (20 ))';
Execute immediate v_sqlstr;
/* Insert
V_sqlstr = 'insert into lab_temp (: V1,: V2 )';
For v_cnt 1 .. 5 Loop
Execute immediate v_sqlstr using v_cnt, 'row' | v_cnt | 'inserted ';
End Loop
*/
/* Query
V_sqlstr = 'select * From lab_temp where id =: V1 ';
Execute immediate v_sqlstr into v_id, v_col using 1;
Dbms_output.put_line ('Id: '| v_id | 'content:' | v_col );
*/
End;