一、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)匿名块的例子

没有声明或异常部分,只执行

BEGINDBMS_OUTPUT.PUT_LINE('PL/SQL is easy!');
END;

宣言和执行部分,但没有例外部分

DECLAREv_date DATE := SYSDATE;
BEGINDBMS_OUTPUT.PUT_LINE(v_date);
END;

宣言和例外部分

DECLAREv_country_name VARCHAR2(40);v_region_id NUMBER;
BEGINSELECT country_name, region_idINTO v_country_name, v_region_idFROM countries WHERE country_id='CA';DBMS_OUTPUT.PUT_LINE ('The country name is: '||v_country_name||' and is located in '||v_region_id||'.') ;
EXCEPTIONWHEN TOO_MANY_ROWS THENDBMS_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--statementsRETURN value;
[EXCEPTION]
END;

(2)子程序的例子

打印当前日期的过程

CREATE PROCEDURE print_date ISv_date VARCHAR2(30);
BEGINSELECT TO_CHAR(SYSDATE,'Mon DD, YYYY')INTO v_dateFROM DUAL;DBMS_OUTPUT.PUT_LINE(v_date);
END;

函数返回字符串中的字符数

CREATE PROCEDURE print_date ISv_date VARCHAR2(30);
BEGINSELECT TO_CHAR(SYSDATE,'Mon DD, YYYY')INTO v_dateFROM DUAL;DBMS_OUTPUT.PUT_LINE(v_date);
END;
CREATE FUNCTION num_characters (p_string IN VARCHAR2)RETURN INTEGER ISv_num_characters INTEGER;
BEGINSELECT LENGTH(p_string) INTO v_num_charactersFROM 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允许您显示结果,以便您可以检查您的块是否正常工作。 它允许您一次显示一个字符串,但可以将它们连接起来。

DECLAREv_emp_count NUMBER;
BEGINDBMS_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;

Oracle入门(十四.3)之创建PL / SQL块相关推荐

  1. Oracle入门(十四F)之PL/SQL定义变量

    一.变量介绍 (1)变量的使用 可以使用变量: 临时存储数据 存储值的操作 可重用性 (2)PL/SQL中的变量处理 变量是: 在声明部分中声明和初始化 在可执行部分中使用和分配新值 变量可以是: 作 ...

  2. Oracle入门(十四G)之PL / SQL中检索数据

    一.PL / SQL中检索数据 (1)PL / SQL中的SQL语句 可以在PL / SQL中使用以下几种SQL语句: •SELECT从数据库检索数据. •DML语句,例如INSERT,UPDATE和 ...

  3. Oracle入门(十四.2)之PL / SQL的好处

    一.PL / SQL的好处 在Oracle数据库中使用PL / SQL编程语言有很多好处. 1.将过程构造与SQL集成 2.模块化程序开发 3.改进的性能 4.与Oracle工具集成 5.便携性 6. ...

  4. Oracle入门(十四.1)之PL / SQL简介

    一.PL / SQL描述 程序语言扩展到SQL: •允许将基本程序逻辑和控制流与SQL语句组合在一起. •是Oracle专有编程语言. - 它只能用于Oracle数据库或工具. 二.程序语言扩展到SQ ...

  5. Oracle入门(十四B)之PL/SQL异常处理

    定义:程序执行过程的警告或错误成为例外(Exception) 一.常见预定义错误 二.非预定义错误及用户定义错误 (1)非预定义oracle错误 其他标准的oracle错误,可以自定义异常名,将其与指 ...

  6. Oracle入门(十四A)之PL/SQL 基本结构

    一.条件控制语句 (1)条件语句I if-then-end if 形式1: if <布尔表达式> then-(pl/sql和sql)-end if; (2)条件语句II if-then-e ...

  7. Oracle入门基础(十一)一一PL/SQL基本语法

    1.打印Hello World declare--说明部分 begin--程序dbms_output.put_line('Hello World'); end; 2.引用型变量 查询并打印7839的姓 ...

  8. 使用ORACLE OCI V8版本编程,在执行PL/SQL块时,不能同时绑定标量变量和数组变量......

    2019独角兽企业重金招聘Python工程师标准>>> 使用的SQL如下: 1.   create table test_oci(id number,val varchar2(200 ...

  9. Oracle数据库PL/SQL块-存储函数和过程

    PL/SQL块 PL/SQL程序由三个块组成,即声明部分.执行部分.异常处理部分 结构如下: declare​ /*声明部分,在此声明变量,类型及游标*/begin​ /*执行部分,过程及sql语句, ...

最新文章

  1. php mongodb execute,php简单操作mongodb
  2. web前端工程师热门岗位技能要求前瞻
  3. air什么意思中文_Air 的中文意思是什么?
  4. MySQL高级 —— 查询性能优化
  5. css小技巧: select的css控制
  6. WCF 4 高级编程 - 读书笔记
  7. python视频教程-中谷python中文视频教程(全38集)
  8. 输入广义表建立双亲表示的树and给定双亲表示的树输出广义表表示的树
  9. mysql数据库下载和创建
  10. python aiohttp百万并发
  11. quartus频率计 时钟设置_基于QuartusII的两种数字频率计的设计与比较
  12. java中国象棋兵吃棋规则_中国象棋吃子的规则
  13. 计算机无法准确计算浮点数,浮点数计算异常原因(转)
  14. 手机访问站点服务器劫持,手机浏览器广告泛滥?你可能被劫持了!
  15. QVegas-一个升级版的TCP Vegas拥塞算法
  16. 【王卓】数据结构与算法图(九)
  17. 图像训练时的数据处理
  18. python连接es_python连接es
  19. SoundHound与本田合作,加速开发AI语音助手
  20. eth 创建钱包,转账 web3j

热门文章

  1. 组件库实战 | 教你如何设计Web世界中的表单验证
  2. [PAT乙级]1031 查验身份证
  3. 《C++ Primer》13.1.1节练习
  4. A Walk Through the Forest HDU - 1142(dijkstra+动态规划)
  5. 数据结构---B-(B)、B+的总结
  6. Codeforces Round #628 (Div. 2) E. Ehab‘s REAL Number Theory Problem 巧妙的质因子建图
  7. P2617 Dynamic Rankings 整体二分
  8. 【CF1344D】Résumé Review【数学】【二分】
  9. P4878 [USACO05DEC]Layout G
  10. [NOI2018] 归程(线段树维护并查集的可持久化/kruskal重构树,倍增+dijkstra最短路)