PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用。PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。MySQL 也支持 PL/SQL 的,但支持Navicat Premium。

一、组成:

1、定义部分:

  定义一些常量、变量等;

2、执行部分:(必须存在)

  包含要执行的sql语句;

3、异常处理部分:

  捕获异常(可能出现的运行错误,并编写出错后的代码)。

declare
--变量声明部分
begin
--执行部分
exception
--异常处理部分
End

二、调试:

使用set serveroutput on 命令设置环境变量;
serveroutput为打开状态,从而使得pl/sql程序能够在SQL*plus中输出结果。
在编写存储过程时,有时会用
dbms_output.put_line将必要的信息输出,以便对存储过程进行调试,只有将serveroutput变量设为on后,信息才能显示在屏幕上。

三、变量的定义:(类似java里面的匿名方法)

1、格式:

变量名 变量类型(oracle里面数据类型) [约束] default 默认值

变量名 变量类型 [约束] [:=初始值]

2、

SQL> declare
2 i number default 10;
3 begin
4 i:=i+10;
5 dbms_output.put_line(i);
6 end;
7 /
20
PL/SQL procedure successfully completed

四、流程控制语句:

1、if语句:

if 条件 then
...
end if; if 条件 then
...
else
...
end if; if 条件 then
...
elsif 条件 then
...
end if;
SQL> declare
2 age number default 90;
3 height number := 175;
4 gender char(4) := '男';
5 begin
6 if gender='男' then
7 dbms_output.put_line('你可以和女性结婚');
8 end if;
9
10 if height>170 then
11 dbms_output.put_line('可以打篮球');
12 else
13 dbms_output.put_line('可以踢足球');
14 end if;
15
16 if age<20 then
17 dbms_output.put_line('年轻小伙');
18 elsif age <= 50 then
19 dbms_output.put_line('年轻有为');
20 elsif age <=70 then
21 dbms_output.put_line('安享天伦');
22 else
23 dbms_output.put_line('佩服佩服');
24 end if;
25
26 end;
27 /
你可以和女性结婚
可以打篮球
佩服佩服
PL/SQL procedure successfully completed

2、while循环:

while 条件 loop
循环体
end loop

3、for循环:

for 循环变量 in [reverse] 起始值..终止值 loop
循环体
end loop

reverse 是倒序;注意起始值与终止值中间有两点

4、loop循环语句:

loop
--循环体
exit when 条件;
end loop;
SQL> declare
2 i number :=0;
3 total number :=0;
4 begin
5 loop
6 i := i+1;
7 total := total + i;
8
9 exit when i>=100;
10 end loop;
11
12 dbms_output.put_line('总和'||total);
13
14 end;
15 /
总和5050
PL/SQL procedure successfully completed

四、存储过程创建语句:

存储过程就是有名字的plsql块!

procedure就是存储过程!

create or replace procedure 名称[(参数)]--此名称类似java里的方法名
authid current_user|definer --以定义者还是调用者的身份运行
is[不要加declare]
--变量声明部分
begin
--主体部分,封装起来,然后调用的时候才开始执行,类似于调用方法!!!
exception
--异常部分
end;
SQL> create procedure a2(width int,height int)
2 is
3 area int:=0;
4 begin
5 area:=width*height;
6 dbms_output.put_line('area is'||area);
7 end;
8 /
Procedure created
--调用存储过程--有参的!
call a2(1,2);

PL/SQL的结构的更多相关文章

  1. oracle学习笔记(十五) PL/SQL语法结构以及使用

    PL/SQL 简介 PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言. PL/SQL 是对 SQL 的扩展. 支持多种数据类型,如大对象和 ...

  2. PL/SQL表结构/数据的导出

    1.表结构导出 方法一:在sql页面点击表名,进入表编辑页面,点击右下角“查看SQL”按钮,即可看到表结构 方法二:工具--导出用户对象 去掉所有者勾选项,即***.表名:用户名字在其他用户导入数据库 ...

  3. PL/SQL 循环结构

    (1)LOOP...EXIT...END语句示例: control_var:; LOOP then EXIT; END IF; control_var:; END LOOP; 上述,初始化contro ...

  4. PL/SQL存储过程编程

    PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编 ...

  5. 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》

    本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...

  6. ORACLE PL/SQL编程详解

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

  7. pl/sql和sql的区别

    源地址:https://zhidao.baidu.com/question/187511430.html 1 sql(数据定义语言) 和PL/Sql的区别:答:SQL是结构化查询语言,比较接近自然语言 ...

  8. 匿名PL/SQL

    立此存照 匿名PL/SQL 语法结构:PL/SQL是一种块结构的语言,组成PL/SQL程序的单元是逻辑块,一个PL/SQL程序包含了一个或多个逻辑块,每一块都可以划分3个部分.变量在使用前必须声明,P ...

  9. PL SQL笔记(三)

    loop then .. exit; end if; end loop; select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') from dual; sel ...

随机推荐

  1. Curiosity-Driven Learning through Next State Prediction

    Curiosity-Driven Learning through Next State Prediction 2019-10-19 20:43:17 This paper is from: http ...

  2. C++11原子操作与无锁编程(转)

    不讲语言特性,只从工程角度出发,个人觉得C++标准委员会在C++11中对多线程库的引入是有史以来做得最人道的一件事:今天我将就C++11多线程中的atomic原子操作展开讨论:比较互斥锁,自旋锁(sp ...

  3. 什么时候会进行 SpringMVC重定向保存参数(FlashMap)?

    SpringMVC重定向保存参数(FlashMap):两种情况会保存参数:    1. 当前视图为RedirectView,也即是说当前请求为重定向请求.        org.springframe ...

  4. java多线程(六)线程控制类

    1.   多线程控制类 为了保证多线程的三个特性,Java引入了很多线程控制机制,下面介绍其中常用的几种: l  ThreadLocal l  原子类 l  Lock类 l  Volatile关键字 ...

  5. shell基础知识4--别名、采集终端信息

    别名就是一种便捷方式,可以为用户省去输入一长串命令序列的麻烦.下面我们会看到如何 使用 alias 命令创建别名. 直接使用alias就是显示当前有哪些别名,否则就是创建别名 [root@dns-no ...

  6. Springboot+Quartz+druid+多库

    很久以前就用过quartz,现在重新用起,主要实现集群方式启动,并且支持多数据源注入到job中.网上demo很多,方法大同小异.但关于数据源注入的深入介绍不多,不错的文章:<spring-boo ...

  7. noi openjudge 1768:最大子矩阵

    链接:http://noi.openjudge.cn/ch0406/1768/ 描述已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如 ...

  8. 基础自动化部署搭建过程【Jenkins】

    测试环境搭建 为了快速搭建一套PHP测试环境我决定用laradock了,虽然文件很多,但是里面封装的东西也是比较全的,后期开发不知道会用到什么技术,就决定先用这个,随时可以启动用得到的服务.larad ...

  9. Docker容器安装配置SQLServer服务(Linux)

    一:前言 随着不断的对Docker容器的实践和学习,越来越觉得容器的强大,把 SQL Server 数据库服务放在docker容器中,比你自己在宿主服务器上面安装配置一个SQL Server服务器是要 ...

  10. SQL Server 数据库启动过程(用户数据库加载过程的疑难杂症)

    前言 本篇主要是上一篇文章的补充篇,上一篇我们介绍了SQL Server服务启动过程所遇到的一些问题和解决方法,可点击查看,我们此篇主要介绍的是SQL Server启动过程中关于用户数据库加载的流程, ...