PL/SQL的结构
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的结构的更多相关文章
- oracle学习笔记(十五) PL/SQL语法结构以及使用
PL/SQL 简介 PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言. PL/SQL 是对 SQL 的扩展. 支持多种数据类型,如大对象和 ...
- PL/SQL表结构/数据的导出
1.表结构导出 方法一:在sql页面点击表名,进入表编辑页面,点击右下角“查看SQL”按钮,即可看到表结构 方法二:工具--导出用户对象 去掉所有者勾选项,即***.表名:用户名字在其他用户导入数据库 ...
- PL/SQL 循环结构
(1)LOOP...EXIT...END语句示例: control_var:; LOOP then EXIT; END IF; control_var:; END LOOP; 上述,初始化contro ...
- PL/SQL存储过程编程
PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编 ...
- 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》
本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...
- ORACLE PL/SQL编程详解
ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...
- pl/sql和sql的区别
源地址:https://zhidao.baidu.com/question/187511430.html 1 sql(数据定义语言) 和PL/Sql的区别:答:SQL是结构化查询语言,比较接近自然语言 ...
- 匿名PL/SQL
立此存照 匿名PL/SQL 语法结构:PL/SQL是一种块结构的语言,组成PL/SQL程序的单元是逻辑块,一个PL/SQL程序包含了一个或多个逻辑块,每一块都可以划分3个部分.变量在使用前必须声明,P ...
- PL SQL笔记(三)
loop then .. exit; end if; end loop; select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') from dual; sel ...
随机推荐
- 织梦Dedecms后台登陆密码忘记怎么办?
有时候长期不登陆后台或则初次建站的新手常常忘记后台登陆密码,不过不用着急,早就有人写好了密码重设工具. 下载解压为radminpass.php, 通过FTP传到网站根目录,然后访问 http:// ...
- opencv 图像resize
这是文档中的函数原型 cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) 参数说明src:要resize的原图,应该是一个矩阵 dsi ...
- Android ImageView属性
ImageView 继承自View组件,主要功能是用于显示图片,实际上它不仅仅可以用来显示图片,任何Drawable对象都可以使用ImageView来显示.ImageView可以适用于任何布局中,并且 ...
- cannot connect to daemon at tcp:5037: cannot connect to 127.0.0.1:5037: 由于目标计算机积极拒绝,无法连接。 (10061)
原因是:5037端口被占用 解决方法:1.查找5037被谁占用 netstat -ano | findstr "3037" 2.查看对应的是哪个任务 tasklist | f ...
- postgre with递归查询组织路径
with递归查询组织路径 SELECT r.id, (array_to_string( array( select name from ( with recursive rec as( select ...
- vmware新加磁盘fdisk看不到的处理
虚拟机硬盘空间不够了,做了lvm准备加块硬盘扩容,在vcenter控制台加了磁盘,结果操作系统里面fdisk -l看不到新加的硬盘,又不想重启怎么办,一条命令就可以搞定. # 注意中间有空格echo ...
- what's the psutil模块
what's the psutil模块 psutil 是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息.它主要用来做系统监控,性能分析,进程管理.它实现 ...
- (原)关于使用imagemagick将gif叠加到图片或者画布上的方法,以及疑难杂症
今天因为项目过程中,有一个小需求,需要将一个指定的gif按照指定大小,叠加到画布的指定位置上,本来对于熟悉这块的人,简直就是小菜一碟哈,但本人因为对imagemagick的不熟悉,导致在这个需求上摸索 ...
- bash命令检测Shell脚本中的语法错误和查看详细执行过程
(1).bash命令检测Shell脚本中的语法错误 bash -v [脚本] [root@youxi1 ~]# vim a.sh #/bin/bash sum=$[$1+$2] echoo $sum ...
- Win7下Powershell 由2.0 升级为 5.1
今天在构建脚本的时候老是提示 Windows 7 默认的Powershell是2.0,查看版本 下载 https://www.microsoft.com/en-us/download/details. ...