Bueno no puedo desde luego extenderme tanto poruw seria un curso de PL/SQL.
Pero a grandes razgos las sentencias que conozco son:
EXECUTE IMMEDIATE
y el package
DBMS_SLQ
Para que sirven... pues no se como explicarlo mejor... para ejecutar SQL DINAMICO, es decir a veces necesitas crear una sentencia SQL pero no sabes como queda sino en el momento de la ejecucion del programa, asi que durante el programa tu creas una cadena de texto sql o pl/sql de acuerdo a lo que vallas necesitando, y luego para ejecutarla invocas uno de estos dos procedimientos.
Un ejemplo muy básico ( y poco funcional)seria:
<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>
SQL </td></tr><tr><td id='CODE'><!--sql1-->CREATE
OR REPLACE PROCEDURE MiProcedure( nombreTable VARCHAR2,nombreColumna VARCHAR2 )
IS
cadena VARCHAR2;
BEG
IN cadena :
= '[color=blue;font-weight]DELETE '[/color]||nombreTable
||
' WHERE '||nombreColumna ||
' IS NULL';
EXECUTE IMMEDIATE cadena;
END; <!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->