Oracle之PL/SQL
基础语法
[declare
--定义部分]
begin
--执行部分
[exception
--异常处理部分]
end;
其中,定义部分以declare开始,该部分是可选的;执行部分以begin开始,该部分是必须的
异常部分以exception开始,该部分是可选的.而end则是pl/sql块的结束标记.

注意我使用的Oracle安装时自带的 SQL Plus请注意第一行命令.否则控制台不输出内容.
当结束时,请输入 / 然后回车.
常用变量类型
char() varchar2() number() date;
运算符与表达式

if分支语句
if 条件 then
执行语句;
elsif 条件 then
执行语句;
else
执行语句;
end if;
(这个写法去掉 then 和java中的 if else if else 一样.看起来好恶心的语法 )记得最后end if; 结尾

切记 除了 else 分支其他分支都要带 then
case语句
case 条件
when 值 then 执行语句
when 值 then 执行语句
....
else 执行语句
end;

case 是可以有返回值的.

将 case 的执行结果赋值给 b; 但是,如果我们让case 有返回值,在case语句结束后就不能是 end case;而只能是end;
循环语句
基本循环
loop
执行体
exit when 条件;
end loop;
注意!这种写法,执行体肯定会执行一次.而 exit 中的条件满足是 停止循环.


程序自上而下执行.
while循环
while 条件 loop
循环体
end loop;

for循环
for 被循环结果赋值 in [reverse] 开始..结束 loop
循环体
end loop;

可以看出for循环的 执行顺序是 判断开始和结束条件.满足赋值给 i.执行循环体,然后再次判断.
for循环中的 i 可以不被声明. 开始条件和结束条件也可以是变量,但是只能是number类型

但是如果被赋值的变量不存在.则无法在循环调用结束后使用该变量.

reverse 的作用则是 ++ 变成 --
goto语句一个破坏力极强的语句
goto 将跳转到 定义好的 标记处.设置标记的 符号为 <<标记>>

null
null特殊的很.首先两个null不相等 null本身不等于null ,判断是否为null 只能使用 is null

复合变量
标准变量只可以保存单个数值,与之对应的就是复合变量.复合变量可以将不同数据类型的多个值
存储在同一个单元中.
%type变量
此变量为不确定类型的变量.变量的具体类型由赋值给他的表字段类型一致.
使用 select into 语句可以将查询出来的值赋值给变量;但是注意使用%type赋值
必须保证赋值的结果是单行单列.

%rowtype变量
%rowtype声明表示一行记录的变量(一个对象),你将一个表中的数据结构赋值给变量x

Oracle之PL/SQL的更多相关文章
- Oracle中PL/SQL的执行部分和各种流程控制
Oracle中PL/SQL的执行部分和异常部分 一.PL/SQL的执行部分. 赋值语句. 赋值语句分两种,一种是定义一个变量,然后接收用户的IO赋值:另一种是通过SQL查询结果赋值. 用户赋值举例: ...
- Oracle中PL/SQL简介、基本语法以及数据类型
Oracle中PL/SQL简介.基本语法以及数据类型 一.PL/SQL简介. Oracle PL/SQL语言(Procedural Language/SQL)是结合了结构化查询和Oracle自身过程控 ...
- 使用oracle 的 PL/Sql 定时执行一个存储过程
CSDN日报20170322--<关于软件研发的一些体会总结> 同步博客至 CSDN ,让更多开发者看到你的文章 看微博技术大咖解析互联网应用架构实战 使用oracle 的 PL/Sql ...
- Oracle之PL/SQL学习笔记
自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了一下,给大家分享,有不足之处还望大家 ...
- 【SQL】Oracle的PL/SQL语法及其拓展数据类型总结
PL/SQL语法 PL/SQL程序由三部分组成,声明部分.执行部分.异常处理部分. 模板: DECLARE /*变量声明*/ BEGIN /*程序主体*/ EXCEPTION /*异常处理部分*/ E ...
- Oracle实践--PL/SQL表分区的基础
PL/SQL基础入门之表分区 PL/SQL:过程语言(Procedure Language)和结构化语言(Structured Query Language)结合而成的编程语言.是对SQL的扩展.支 ...
- C#(在WeBAPI)获取Oracle(在PL/SQL)游标类型的存储过程(用到了RefCursor)
需求:WebAPI服务端,通过Oracle数据库的存储过程,获取数据. 在PL/SQL 建立存储过程:(先来最简单的,就是把整个表都查出来) create or replace procedure S ...
- 【Oracle】PL/SQL 显式游标、隐式游标、动态游标
在PL/SQL块中执行SELECT.INSERT.DELETE和UPDATE语句时,Oracle会在内存中为其分配上下文区(Context Area),即缓冲区.游标是指向该区的一个指针,或是命名一个 ...
- Oracle数据库PL/SQL那点事情---修改过电脑的用户名
在安装Oracle数据库的PL/SQL工具时候,电脑名称是重装系统后自动生成的用户名名称,作为程序员,有很强的强迫症,就想利用自己的英文名称作为自己电脑的名称,所以就修改了电脑的名称:结果PL/SQL ...
- ORACLE FORMS PL/SQL PACKAGE SHOW TIPS WINDOW
--在开发ORACLE FORM的程序中,要编写PL/SQL程序包产出异常情况时,直接在FORM弹出一个异常提示窗口 DECLARE BEGIN app_exception.raise_excepti ...
随机推荐
- 基于直接缓冲区和非直接缓冲区的javaIO文件操作
基本概念: 1. 非直接缓冲区: 指的是通过jvm来缓存数据的,应用程序要读取本地数据要经历从本地磁盘到物理内存,然后copy到jvm中,然后再通过流的方式读取到应用程序中,写的操作正好与之相反. ...
- 关于前端ajax请求url为何添加一个随机数
一.起因 我在做爬虫的时候发现很多网站上都在url上加一个随机数或者时间戳一开始我以为是啥加密后面发现其实他在后台解析的时候也不需要不排除有些网站他反爬就需要一个时间戳,那他加个随机数是做啥子 二.查 ...
- elasticsearch bulk
情景介绍 公司2000W的数据从mysql 迁移至elasticsearch,以提供微服务.本文基于elasticsearch-py bulk操作实现数据迁移.相比于elasticsearch-dum ...
- SparkStreming中 `transform()`算子的 的使用
关联 DStream 和 RDD transform(func) Return a new DStream by applying a RDD-to-RDD function to every RDD ...
- springboot测试启动报错java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test
springboot测试启动报错: java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you ne ...
- Python乘法口诀表
乘法口诀表 print("乘法口诀表") for i in range(1,10): for j in range(1,i+1): print(str(i) ...
- linux设备驱动程序-设备树(2)-device_node转换成platform_device
设备树处理之--device_node转换成platform_device 以下讨论基于linux4.14,arm平台 platform device 设备树的产生就是为了替代driver中过多的pl ...
- 关于苹果macOS更新到Catalina后出现的各种问题(持续更新)
一.Mac系统更新后 Git 不能用,提示 missing xcrun at:xxx xcrun: error: invalid active developer path (/Library/Dev ...
- Linux系统中的load average(平均负载/运行队列)
1.load average 的含义 系统负载(System Load)是系统CPU繁忙程度的度量,即有多少进程在等待被CPU调度(进程等待队列的长度) linux系统中的Load对当前CPU工作量的 ...
- Vue-router路由传参的三种方式
本文简单介绍下三种路由传参: (1)在路由中配置 { path : ‘/home/:id’, name : ‘Dome’, component } 然后写调用的时候 this.$router.push ...