一、编写匿名块并执行

          前文中介绍了PL/SQL的几种块的类型,其中匿名块是一种即时创建即时执行的块,下面使用sql*plus来演示一下如何创建一个匿名块:

SQL> show user

-- 显示当前用户 
USER is "HR"

 

SQL>  

  1 DECLARE
  2   v_fname VARCHAR2(20);
  --DECLARE 部分,后文中将详解命名规则
  3  BEGIN
  4   SELECT first_name
  5   INTO v_fname
  6   FROM employees
  7   WHERE employee_id=100;
  8  END;
  9  /
  -- 在sql*plus中要结束PL/SQL的编写,使用斜杠/即可 
PL/SQL procedure successfully completed.
  -- 提示执行成功


 

二、将执行结果显示到屏幕上

         虽然提示执行成功了,但是我们无法看到执行的结果,因此可以使用set命令来设置输出效果。

首先使用help set命令查看set的使用方法:

SQL> help set

 

 SET
 ---
  Sets a system variable to alter the SQL*Plusenvironment settings
 for your currentsession. For example, to:
     -   set the display width for data
     -   customize HTML formatting
     -   enable or disable printing of columnheadings
     -   set the number of lines per page
 SET system_variablevalue
 where system_variableand value represent one of the following clauses:
   BLO[CKTERMINATOR]{.|c|ON|OFF}           RECSEPCHAR {_|c}
   CMDS[EP]{;|c|OFF|ON}                   SERVEROUT[PUT] {ON|OFF}                                                      -- 设置server端是否显示结果
   COLSEP{_|text}                            [SIZE{n | UNLIMITED}]                                                     -- 显示的缓冲区的大小
   CON[CAT]{.|c|ON|OFF}                     [FOR[MAT]  {WRA[PPED] |

 

SQL> set serveroutput on

-- 打开屏幕输出


SQL> l

-- 使用L命令,从sql的命令历史中提取上一次执行的语句 
1  DECLARE
  2   v_fname VARCHAR2(20);
  3  BEGIN
  4   SELECT first_name
  5   INTO v_fname
  6   FROM employees
  7   WHERE employee_id=100;
  8* END;

SQL> /

PL/SQL procedure successfully completed.
-- 还是没有看到输出结果,这是由于在之前的匿名块中并没有定义输出结果,所以需要重写这个匿--- 名块。


 

三、调用DBMS_OUTPUT.PUT_LINE()显示输出结果

SQL>

 

  1  DECLARE
  2     v_fname VARCHAR2(20);
  3  BEGIN
  4     SELECT first_name
  5     INTO v_fname
  6     FROM employees
  7     WHERE employee_id = 100;
  8     DBMS_OUTPUT.PUT_LINE('The result is ' ||v_fname);
--  使用包DBMS_OUTPUT中的方法PUT_LINE输出结果(类似于C语言中的printf())
--  但是使用DBMS_OUTPUT.PUT_LINE()前,必须确保serveroutput设为on了
--  其中|| 为连字符 
  9  END;
 10  /
The result is Steven
--  可以看到输出结果为Steven了。 
PL/SQL procedure successfully completed.

 

以上就是一个匿名块的创建过程。