一、PL / SQL块结构
一个PL / SQL块由三部分组成。
PL / SQL块结构部分
二、PL / SQL编译器
用高级编程语言(C,Java,PL / SQL等)编写的每个程序都必须经过检查并转换为二进制代码(1和0),然后才能执行。 执行此检查和翻译的软件称为编译器。
PL / SQL编译器在需要时自动执行。 它不仅检查每个单词拼写是否正确,而且还检查是否存在任何引用的数据库对象(如表),并且用户具有访问它们的必要特权。
三、匿名块
(1)匿名块的特征•未命名的块
•未存储在数据库中
•在其执行的应用程序中的内部声明为内联
•每次执行应用程序时编译
•传递给PL / SQL引擎以在运行时执行
•无法调用或调用,因为它没有名称,执行后不存在
[DECLARE]
BEGIN
--statements
[EXCEPTION]
END;
(2)匿名块的例子
没有声明或异常部分,只执行
BEGIN
DBMS_OUTPUT.PUT_LINE('PL/SQL is easy!');
END;
宣言和执行部分,但没有例外部分
DECLARE
v_date DATE := SYSDATE;
BEGIN
DBMS_OUTPUT.PUT_LINE(v_date);
END;
宣言和例外部分
DECLARE
v_country_name VARCHAR2(40);
v_region_id NUMBER;
BEGIN
SELECT country_name, region_id
INTO v_country_name, v_region_id
FROM countries WHERE country_id='CA';
DBMS_OUTPUT.PUT_LINE ('The country name is: '||v_country_name||' and is located in '||v_region_id||'.') ;
EXCEPTION
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE ('Your select statement retrieved multiple rows. Consider using a cursor.');
END;
四、子程序
(1)子程序•命名为PL / SQL块
•存储在数据库中
•可以根据您的应用程序随时调用
•可以声明为程序或功能
- 过程:执行操作
- 功能:计算并返回一个值
PROCEDURE name
IS
--variable declaration(s)
BEGIN
--statements
[EXCEPTION]
END;
FUNCTION name
RETURN datatype
--variable declaration(s)
IS
BEGIN
--statements
RETURN value;
[EXCEPTION]
END;
(2)子程序的例子
打印当前日期的过程
CREATE PROCEDURE print_date IS
v_date VARCHAR2(30);
BEGIN
SELECT TO_CHAR(SYSDATE,'Mon DD, YYYY')
INTO v_date
FROM DUAL;
DBMS_OUTPUT.PUT_LINE(v_date);
END;
函数返回字符串中的字符数
CREATE PROCEDURE print_date IS
v_date VARCHAR2(30);
BEGIN
SELECT TO_CHAR(SYSDATE,'Mon DD, YYYY')
INTO v_date
FROM DUAL;
DBMS_OUTPUT.PUT_LINE(v_date);
END;
CREATE FUNCTION num_characters (p_string IN VARCHAR2)
RETURN INTEGER IS
v_num_characters INTEGER;
BEGIN
SELECT LENGTH(p_string) INTO v_num_characters
FROM DUAL;
RETURN v_num_characters;
END;
五、程序构造
下表概述了使用基本PL / SQL块的各种不同的PL / SQL程序结构。 这些构造是基于它们被执行的环境而提供的。
六、PL / SQL编程环境
有许多工具为环境提供了一个环境开发PL / SQL。 Oracle提供了几种工具可以使用。 一些Oracle开发工具是:七、Oracle Application Express
Oracle Application Express是一个基于浏览器的Web应用程序环境,它提供了SQL Workshop组件。
八、使用SQL Workshop进行开发
当您登录到Oracle Application Express并选择SQL Workshop时,可以选择使用SQL命令选项来使用SQL命令行编辑器,也可以选择SQL脚本选项在脚本编辑器中工作。九、SQL命令
您可以使用SQL命令输入并运行单个SQL语句或单个PL / SQL块。 SQL脚本可以包含一个或多个SQL语句和/或PL / SQL块。 使用SQL脚本输入并运行多语句脚本。
使用DBMS_OUTPUT.PUT_LINE示例
看看这个简单的PL / SQL块和它的输出。 你如何显示结果?
使用DBMS_OUTPUT.PUT_LINE
让我们添加一个对DBMS_OUTPUT.PUT_LINE的调用。 现在你可以看到结果!
DBMS_OUTPUT.PUT_LINE允许您显示结果,以便您可以检查您的块是否正常工作。 它允许您一次显示一个字符串,但可以将它们连接起来。
DECLARE
v_emp_count NUMBER;
BEGIN
DBMS_OUTPUT.PUT_LINE('PL/SQL is easy so far!');
SELECT COUNT(*) INTO v_emp_count FROM employees;
DBMS_OUTPUT.PUT_LINE('There are '||v_emp_count||'
rows in the employees table');
END;