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. 【重庆师范大学】PHP博客训练-Thinkphp

    设计数据库 CREATE TABLE `user` ( `user_id` int unsigned NOT NULL AUTO_INCREMENT, `username` varchar() COM ...

  2. Presto: SQL on Everything

    Presto是FB开源出来的实时分析引擎,可以federated的从多种数据源去读取数据,做联合查询,支持实时Interactive BI或bath ETL的需求 从其问题域来看,基本是和spark是 ...

  3. ROC曲线 VS PR曲线

    python机器学习-乳腺癌细胞挖掘(博主亲自录制视频)https://study.163.com/course/introduction.htm?courseId=1005269003&ut ...

  4. Wordpress 安装或切换不同的版本

    如果升级到最新版本的 Wordpress 后,发现有 bug,需要回滚回上一个相对稳定的版本,可以按照如下步骤: 一.到官网下载压缩包 https://wordpress.org/download/r ...

  5. setTimeout的小尴尬

    我们都知道,alert这种内置弹框会阻塞后续代码执行: 之所以如此,就是因为JavaScript代码在浏览器中是单线程执行的.换句话说,浏览器中只有一个主线程负责运行所有JavaScript代码(不考 ...

  6. 【转】Sql Server查看所有数据库名,表名,字段名(SQL语句)

    -- 获取所有数据库名 select * from master..SysDatabases; -- 获取hotline数据库中所有表名 select name from hotline..SysOb ...

  7. EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案使用过程中问题的自我排查-设备不在线问题自我排查检测

    由于EasyNVR的受众越来越多,时常会遇到很多类似的问题咨询,之前虽然有写过很多的博文进行技术的或者使用问题的解答,随着客户询问的增多,我发现,要想让客户了解问题和解决问题,往往引导和给一个思路比直 ...

  8. C# HashSet集合类型使用介绍

    1.HashSet集合 使用HashSet可以提高集合的运算.使用HashSet集合不自带排序方法,如果需要排序的需求可以参考使用List<T>集合配合Sort方法. HashSet的优势 ...

  9. windows下的计算时间间隔 -- GetTickCount()

    用法: #include "windows.h" DWORD lastTime =0;DWORD currentTime = 0;DWORD spendTime = 0; last ...

  10. ASP.NET Core webapi json 返回时间格式问题

    网站找了几个方案不好使,比如: 1: services.AddMvc().AddJsonOptions(opt => { opt.SerializerSettings.DateFormatStr ...