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. Python开源项目Top30

    原文地址:https://www.cnblogs.com/stoker/p/9101825.html No 1:Home-assistant (v0.6+) 基于Python 3的开源家庭自动化平台[ ...

  2. php-7.3.4 configure: error: Please reinstall the libzip distribution

    php-7.3.4 configure: error: Please reinstall the libzip distribution # wget https://libzip.org/downl ...

  3. python开发笔记-连接rabbitmq异常问题unacked处理

    待补充 思路:捕获程序处理异常,异常情况下,也给队列生产者返回“确认”消息

  4. Python3基础 内置函数 dir 查询对象的方法列表

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  5. pythonic——python化的语法

    1.unpacking 使用类似tuple的形式多项赋值,而不是逐项: list1 = ['hello','world','python','java'] # h = list1[0] # w = l ...

  6. 阿里云环境安装K8S步骤

    1. 安装docker yum install -y docker 2. 修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值 $ vim /et ...

  7. 【LeetCode算法-53】Maximum Subarray

    Given an integer array nums, find the contiguous subarray (containing at least one number) which has ...

  8. python时间戳,获取当前时间,时间格式转换,求出前几天或后几天的时间

    import time import datetime import locale import random class TimeUtil: def __init__(self, curtime=N ...

  9. IDEA中Lombok插件的安装及使用

    这个插件的好处在于可以让我们的代码更简洁,减少一些重复的工作,最常用的就是@Data注解,比如在实体类上使用@Data注解,实体类的各个属性就不需要书写get和set方法. 安装方法: 1.File→ ...

  10. element ui + sortablejs实现表格的行列拖拽

    <template> <div class="container"> <el-table :data="tableData" bo ...