一、编写匿名块并执行
前文中介绍了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.
以上就是一个匿名块的创建过程。
转载于:https://blog.51cto.com/wuyelan/1538784