一、 为什么把SQL语句组合成PL/SQL语句块效率会更高?
使用PL/SQL语句块中的SQL语句更加高效,原因主要是这样做可以大幅降低网络流量,应用程序也会变得更加高效。
当客户端计算机发出一条SQL语句时,服务器的数据库处理这个请求,并把结果集返回给客户端。因此,一条SQL语句涉及2次网络传输。如果发出多个SELECT语句,网络流量会大幅增长。例如,4条SELECT语句会带来8次网络传输。如果这些语句是某PL/SQL语句块的一部分,只需要2次网络传输,就相当于一条SELECT语句。
二、命名和匿名PL/SQL语句块之间存在什么差别?
命名PL/SQL语句块存储于数据库中,之后可以使用名称来引用它们。匿名PL/SQL语句块没有名称,不会存储在数据库中,后期无法引用。
三、PL/SQL语句块包含三部分:声明部分、可执行部分以及异常处理部分。可执行部分是语句块中唯一要求必须存在的部分。声明部分和异常处理部分是可选的。PL/SQL语句块的结构通常如下所示:
DECLARE
Declaration statements
BEGIN
Executable statements
EXCEPTION
Exception-handling statements
END;
四、 PL/SQL语句块的编译过程包含哪些步骤?
编译过程包含语法检查、绑定以及伪代码生成。语法检查涉及检查PL/SQL代码中的语法或者编译错误。在纠正语法错误以后,会给每个变量分配存储地址,以保存Oracle数据。这个过程称为绑定。接下来,会生成PL/SQL语句块的伪代码。伪代码是PL/SQL引擎的指令列表。对于命名语句块,伪代码会存储在数据库中,并在程序下一次被执行时使用。
五、 PL/SQL中包含两种注释:单行注释(--)和 多行注释(/* */)。最好使用单行注释(--),而避免使用多行注释(/* */)。因为单行注释的代码段可以被注释掉,而多行注释的代码段不能被注释掉。这样单行注释有利于代码调试。
六、VARCHAR2,存储变长的字符数据,必须显性指定长度,可指定的字符变量最大长度为32767字节。数据库列的最大宽度为4000字节。
CHAR,存储定长的字符数据,默认为1字节,可指定的字符变量最大长度为32767字节。数据库列的最大宽度为2000字节。
七、SELECT INTO 语法
DECLARE
v_dept number(2);
BEGIN
select deptno
into v_dept
from dept where dname='RESEARCH';
DBMS_OUTPUT.PUT_LINE('The dept num is: '||v_dept);
END;