SQL的4GL,对流程控制的支持不够,Oracle的PL/SQL是3GL。加入了流程控制、变量等支持能够在数据库层面上进行程序的设计。

  • PL/SQL的特点

    1.支持事务控制和SQL.

    2.数据类型在SQL的基础上进行了扩展。

    3.PL/SQL可存储在Oracle数据库上。

    4.能够对PL/SQL进行权限控制。

  • PL/SQL的优势

    1.能够提高横向的运行性能。

    2.能够使程序模块化。

    3.能够採用逻辑控制语句来控制程序的结构。

    4.利用运行时的错误信息,做日志记录。

    5.良好的移植性。

  • PL/SQL的结构

    pl/sql的基本单位是块。分为三部分:声明部分,运行部分和异常处理部分。

    以declare作为開始标记。运行部分用begin作为标志,异常处理部分以exception作为标志。当中运行部分是必须有的。

[declare]
....
begin
...
[exception]
...
end;

比如:

仅仅包括运行体

begin
dbms.output.put_lin('运行体...');
end;

注意,在使用dbms_output之前要打开控制器输出开关:set serveroutput on;

包括声明和运行体两部分:

declare
v_result number(8,2);
begin
v_result = 100 / 6;
dbms_output.put_line('结果是:'||v_result);
end;

包括声明、运行体和异常处理三部分

declare
v_ename varchar2(20);
begin
select ename into v_ename from emp where empno=7369;
dbms_output.put_line('姓名:'||v_ename);
exception
when no_data_found then
dbms_output.put_line('没有该员工');
when too_many_rows_exeption then
dbms_output.put_line('数据过多');
end。
  • PL/SQL中变量的使用

    1.声明变量的语法结构
variable_name datatype[ [not null] {:=|default} expression];

2.常量声明

constant_name constant datatype
[not null]
{:=default} expression;

常量的datatype有下面三种:

1)标量类型:单一类型,不存在组合

2)复合类型:由几种单一类型组成

3)引用类型:使用其它数据项的引用

标量类型:

数值

number(pression,scade)

binary_integer

pls_integer

simple_integer

字符

char

varchar2

nvarchar

long

布尔类型

true/false/null

日期类型

date/datestamp

复合类型(先定义后声明变量)

记录类型声明语法

type type_name is recode
(
field_name datatype
[ [not null] {:=|default} expression]
[,field_name datatype
[not null]
{:=|default} expression
]
);

VARRAY变长数组:它是一个存储有序元素的集合。适合较少的数据使用。

声明语法:

type type_name is {varray} (size_limit) of element_type [not null]
  • PL/SQL中的结构控制语句

1.IF条件语句

IF condition THEN
statement;
END IF;

IF condition THEN
statement;
ELSE
statement;
ENDF IF;

IF condition THEN
statement;
ELSE IF condition THEN
statement;
ELSE
statement;
END IF;

2.CASE语句

①简单case

[<<label_name>>]

CASE case_operate
WHEN condition THEN
statement;
[WHEN condition THEN
statement;]
[ELSE
statement;] END CASE[<<label_name>>]

②搜索case

[<<label_name>>]
CASE
WHEN boolean_exp THEN statement;
[WHEN boolean_exp THEN statement;]
...
[ELSE statement;] END CASE[<<label_name>>]
  • LOOP循环控制语句

    1.基本LOOP
[<<label_name>>]
LOOP
statement;
END LOOP [<<label_name>>];

基本loop语句通常和exit连用。否则会出现死循环

[<<label_name>>]
loop
....
exit when ...
| if ... exit;

2.WHILE..LOOP

[<<label_name>>]
when boolean_exp
loop
statement;
end loop[<<label_name>>]

3.FOR…LOOP

[<<label_name>>]
for index_name in
[REVERSE] //反向
lower_bound, upper_bound
loop
statement;
end loop[<<label_name>>]

SQL-PL/SQL基础的更多相关文章

  1. SQL PL/SQL语法手册

    SQL  PL/SQL语法手册 目   录 第一部分  SQL语法部分 3 一. CREATE TABLE 语句 3 二. CREATE SEQUENCE语句 5 三. CREATE VIEW语句 6 ...

  2. SQL & PL/SQL 模块总结

    SQL 1. 各种function 2. merge 3. connect by PL/SQL 1. pl/sql 寄出 2. 游标 3. procedure 4. function 5. packa ...

  3. sql: PL/SQL proc

    A PL/SQL block has the following structure: [DECLARE declaration_statements ] BEGIN executable_state ...

  4. Oracle数据库之PL/SQL基础

    介绍PL/SQL之前,先介绍一个图像化工具:Oracle SQL Developer 在oracle的开发过程中, 我们难免会使用第三方开发的软件来辅助我们书写SQL, pl/sql是一个不错的sql ...

  5. PL/SQL编程基础(一):PL/SQL语法简介(匿名PL/SQL块)

    PL/SQL PL/SQL是Oracle在关系数据库结构化查询语言SQL基础上扩展得到的一种过程化查询语言. SQL与编程语言之间的不同在于,SQL没有变量,SQL没有流程控制(分支,循环).而PL/ ...

  6. PL/SQL编程基础——PL/SQL简介

    课程教师:李兴华 课程学习者:阳光罗诺 日期:2018-07-28 知识点: 1. 了解PL/SQL的主要特点 2. 掌握PL/SQL块的基本结构 PL/SQL PL/SQL是Oracle在关系数据库 ...

  7. Oracle PL/SQL语句基础学习笔记(上)

    PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE server和其它工具中了,近几年中很多其它的开发者和DBA開始使用PL/SQL,本文将讲述PL ...

  8. 慕课网笔记之oracle开发利器-PL/SQL基础

    实例1--if语句 /* 慕课网Oracle数据库开发必备之PL/SQL_2-3 判断用户从键盘输入的数字 1.如何使用if语句 2.接收一个键盘的输入(字符串) */ set serveroutpu ...

  9. oracle学习(二)pl/sql基础

    pl/sql组成:DDL DML DCL pl/sql特点: SQL&PL/SQL编译器集成PL/SQL,支持SQL所有范围的语法 支持CASE语句和表达式 继承和动态方法释放 类型进化.属性 ...

  10. ORACLE PL/SQL编程详解

    ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...

随机推荐

  1. 深入理解java虚拟机_第二章_读书笔记

    1.本章内容目录: 概述 运行时数据区域 程序计数器 java虚拟机栈 本地方法栈 java堆 方法区 运行时常量池 直接内存 HotSpot虚拟机对象探秘 对象的创建 对象的内存布局 对象的访问定位 ...

  2. stm32l053r8 nucelo板的串口实验

    stm32cubel0的HAL驱动实例中,基于stm32l53R8  nucelo板的官方串口通讯例程,是使用USART1实现在两块stm32l053r8 nucelo板间通讯.而在实际中,笔者手中只 ...

  3. 我两年的web开发生涯

    我两年的web开发生涯 与以前的文章分享给大家自己的知识和观点不同,这篇文章更多的是写给自己的总结. 现在是 2017年10月18. 从 2015年9月 开始接触前端开发,至今两年零一个月. 从 20 ...

  4. 编程语言 : Java的动态Web解决方案泛谈

    文章概述 最近发现很久前一股脑地学习框架,发觉越发迷糊.知道了框架只是暂时的,重点是基础的技术.该文大篇幅回顾Servlet技术栈和简要的MVC框架. 至于为什么学J2EE,额,大家都用框架,可框架也 ...

  5. springboot之banner

    1 在Main里面关闭 @SpringBootApplication@MapperScan("org.sselab.mapper")public class Application ...

  6. Vue-cli创建项目从单页面到多页面2-history模式

    之前讲过怎样将vue-cli创建的项目改造成多页面(vue-cli创建项目从单页面到多页面),今天说一下怎样在多页面的前提下使用history模式. 如何使用history模式 因为vue默认的has ...

  7. 向maven中添加本地jar包

    <dependency> <groupId>org.csource</groupId> <artifactId>fastdfs-client-java& ...

  8. 利用反射机制设计Dao

    本文主要介绍如何通过Java反射机制设计通用Dao,针对中间使用到的方法进行介绍,不对反射做全面的介绍. 测试方法大家可以直接拷贝去试一下,特地写成比较通用的,注意参数就好了,当然最后还是会附上完整的 ...

  9. MapReduce 入门之一步步自实现词频统计功能

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7687120.html ------------------------------------ ...

  10. JAVA基础3——常见关键字解读(1)

    常见的JAVA中的关键字 static static静态变量 静态变量:使用static关键字定义的变量.static可以修饰变量和方法,也有static静态代码块.被static修饰的成员变量和成员 ...