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. pom.xml activatedProperties --spring.profiles.active=uat 对应

    <profiles> <profile> <id>dev</id> <properties> <!-- 环境标识,需要与配置文件的名称 ...

  2. Xamarin.FormsShell基础教程(7)Shell项目关于页面的介绍

    Xamarin.FormsShell基础教程(7)Shell项目关于页面的介绍 轻拍标签栏中的About标签,进入关于页面,如图1.8和图1.9所示.它是对应用程序介绍的页面. 该页面源自Views文 ...

  3. 在 Windows 服务中托管 ASP.NET Core

    众所周知,ASP.NET Core采用了和传统ASP.NET不同的托管和HTTP处理方式,即把服务器和托管环境完全解耦.ASP.NET Core内置了两个HTTP服务器实现,一个是基于libuv实现的 ...

  4. some try on func swap about & and *

    import "fmt" func swap(x,y *int ) { //x ,y = y,x //fault /* t := *x *x = *y *y = t */ //tr ...

  5. cisco 路由与ASA SSH 设置

    转载于https://www.cnblogs.com/sun292393989/p/8980700.html 一 试验拓扑 二 Server配置 ①配置hostname和domain name 因为r ...

  6. U盘无法格式化解决

    我的U盘是fat32格式的,4G以上的东西拖不进去 于是我打算格式化成NTFS的,然后悲剧了,格式化提示windows格式化不成功

  7. HTML和CSS个人笔记

    目录 定位 文字显示在图片上 ul的li元素的小圆点换成图片 关于Bootstrap的响应式 不要在container之外使用row 不要使用padding的时候固定高度 不要使用<hr p标签 ...

  8. cmake 指定gcc/g++版本

    export CC=/usr/local/bin/gcc export CXX=/usr/local/bin/g++ cmake /path/to/your/project make

  9. phpspreadsheet 中文文档(六)读写文件+读取文件

    2019年10月11日14:05:58 读写文件 从体系结构您已经知道,使用基本PhpSpreadsheet类无法对持久性存储进行读写.为此,PhpSpreadsheet提供读者和作家,这是实现\Ph ...

  10. zabbix 后台数据库清除数据

    alerts 表 problem 表 escalations 表 events 表  event_recovery表 对 这些表进行清除 防止不停发送邮件 -- alerts table rebuil ...