2.1.2与SQL语言整合
在PL/SQL中不仅可以执行SQL语句,还支持很多增强性的特性,比如在SQL语句中使用变量、使用PL/SQL定义函数等。在PL/SQL语句块中可以使用SQL语句操作数据库,PL/SQL支持所有的SQL数据操作、游标和事务处理指令,支持所有的SQL函数、操作符和伪列,完全支持SQL数据类型。
注意的地方 : 在PL/SQL代码中只能直接使用DML语句,如果在PL/SQL代码中直接使用SQL的DDL语句,Oracle将会提示绑定错误,例如在PL/SQL中执行一个创建表的语法,如以下代码所示。
begin
create table teacher(
name varchar2(20) null,
age number null
) ;
end;
在plsql developer中执行时会提示错误。
这是由于PL/SQL在早期绑定特性做决定的,在编译时PL/SQL引擎发现teacher表不存在,就会引起编译的错误。在PL/SQL中,处理DDL语句的方式是使用动态的SQL,如果将上面的代码修改为如下的代码时,则执行通过。
declare
--定义SQLDDL语句
v_sqlStr varchar2(200) :='create table teacher(
name varchar2(20) null,
age number null
) ';
begin
execute immediate v_sqlStr;
end;
在代码中首先定义了一个v_sqlStr变量,赋予了创建表的DDL语句,然后使用了PL/SQL的EXECUTE IMMEDIATE 来执行这个DDL语句,使用了动态执行后,表创建成功。