Oracle入门(十四)之PL/SQL
一、PL/SQL 基本语法
PL/SQL语言是模块式的过程化SQL,是oracle公司对SQL的扩展。
(1)
(2)
(3)
(5)
(6)
(7)数据类型
- Number 数字型
- Varchar2 变长字符型,最大32767个字符
- Date 日期型
- Boolean 布尔型(TRUE,FALSE,NULL三者取一)
- Char 定长字符型,最大32767个字符
- Int 整数型
- Pls_integer 整数型,产生溢出时出现错误
- Binary_integer 整数型,表示带符号的整数
- Long 变长字符型,最长2GB
(8)标识符
用来命名常量、变量、游标、程序和包
1)必须以字母(A-Z)开头
2)其后跟字母、数字(0-9)或特殊字符$#_
3)标识符不超过30字符
4)标识符中不包含空格
5)标识符不能为保留字
6)标识符不区分大小写
非法标识符:12_sal; first-name; sec name;
(9)变量的定义
变量名 数据类型 [not null] [:= 值]
例1: vn_snum number;
例2: vs_name varchar2(10);
例3: vn_sid tab_server.sid%type ; --锚定列
(10)常量定义
常量名 constant 数据类型 [not null] :=值
例1:vn_num constant number := 10;
(11)
(12)赋值语句: 赋值语句
包括直接赋值和间接赋值
直接赋值 v_num := 20000;
间接赋值(select into、fetch into)
select max(innum), min(innum)
into v_max, v_min
from tab_ingoods;
二、应用案例
编写一个匿名块程序实现:
根据一个员工姓名的本月绩效(变量初始值为10)计算并输出该员工本月收入
本月收入=基本工资(salary)+佣金百分比(COMMISSION_PCT)*绩效
set serveroutput on --dbms_output 输出有效,用在sql developer
declarev_b number:=10; --初始值v_lastname varchar2(10):=‘XXX';-- v_firstname employees.first_name%type; --锚定变量v_salary number(6,2);
beginselect nvl(salary,0)+nvl(COMMISSION_PCT,0)*v_binto v_salary --间接赋值from employees where last_name=v_lastname;dbms_output.put_line(v_lastname||'本月的工资为:'||v_salary);
end;
三、PL/SQL 基本结构
(1)条件控制语句
declaretheGrade number:= 88;
beginif theGrade>=90 thendbms_output.put_line('杰出');elsif theGrade>=80 thendbms_output.put_line('优秀');elsif theGrade>=60 thendbms_output.put_line('合格');elsedbms_output.put_line('不及格');end if;
end;
(2)循环
简单循环
set serveroutput on;
declarei number(8):=5;
begin<<first_loop>>loopdbms_output.put_line('i = '||i);i:= i-1;exit first_loop when i = 0;end loop;dbms_output.put_line('LOOP循环已经结束!');
end;
For循环
beginFor循环for i in -3..3 loopdbms_output.put_line('i = '||i);end loop;dbms_output.put_line('FOR循环已经结束!');
end;
While循环
declarei number(8):=5;
While循环
beginwhile(i > 0) loopdbms_output.put_line('i = '||i);i:=i-1;end loop while_loop;dbms_output.put_line('WHILE循环已经结束!');
end;
Case语句
set serveroutput Case语句on
declaregender varchar2(20):= '男';
begincase genderwhen '男' then dbms_output.put_line('勇敢');when '女' then dbms_output.put_line('漂亮');else dbms_output.put_line('人妖');end case;
end;
Goto语句
DECLAREi number;
BEGINi:=5;<<repeat_loop>> --循环点DBMS_OUTPUT.PUT_LINE('i='||i);i:=i-1;IF i>0 THENGOTO repeat_loop; --小于5,就goto到repeat_loopEND IF;
END;
注:Oracle入门(十四A)之PL/SQL 基本结构
四、异常处理
DECLARE v_empno employees.employee_id%TYPE:= &empno;v_sal employees.salary%TYPE;
BEGINSELECT salary INTO v_sal FROM employeesWHERE employee_id = v_empno;IF v_sal<=15000 THENdbms_output.put_line('编码为'||v_empno||'员工该加100元!');ELSEdbms_output.put_line('编码为'||v_empno||'员工工资已经超过规定值!');END IF;
EXCEPTIONWHEN NO_DATA_FOUND THENdbms_output.put_line('数据库中没有编码为'||v_empno||'的员工');WHEN TOO_MANY_ROWS THENdbms_output.put_line('程序运行错误!请使用游标');WHEN OTHERS THENdbms_output.put_line(SQLCODE||'---'||SQLERRM);
END;
注:Oracle入门(十四B)之PL/SQL异常处理
Oracle入门(十四)之PL/SQL相关推荐
- Oracle数据库第四课——PL/SQL中的条件控制
知识点: PL/SQL 有 3 种类型的条件控制结构:IF.ELSIF 和 CASE 语句.掌握 IF 语句的用法, 掌握 ELSIF 语句的用法, 理解嵌套 IF 语句的用法, 掌握 CASE 语句 ...
- 第十四章 使用SQL Shell界面(三)
文章目录 第十四章 使用SQL Shell界面(三) SQL元数据.查询计划和性能指标 显示元数据 SHOW STATEMENT EXPLAIN and Show Plan SQL Shell Per ...
- 第十四章 使用SQL Shell界面(一)
文章目录 第十四章 使用SQL Shell界面(一) 执行SQL的其他方式 调用SQL Shell GO命令 输入参数 执行ObjectScript命令 浏览命名空间 CALL 命令 执行SQL脚本文 ...
- oracle空间数据库实验报告,Oracle数据库实验报告六 PL/SQL基础
Oracle数据库实验报告六 PL/SQL基础 -by QQC from BTBU [实验目的] PL/SQL的安装网上有很多教程这里就不做赘述了,如果后序需求大的话我再考虑做一期PL/SQL安装使用 ...
- 免安装Oracle客户端就能使用pl/sql developer
所幸发现了一个Windows下免安装Oracle客户端就能使用pl/sql developer轻便的方法,分享:1, 从Technical Resources | Oracle ... htdocs/ ...
- Oracle(四):PL/SQL、存储函数、存储过程、触发器
一.PL/SQL (一)什么是 PL/SQL PL/SQL(Procedure Language/SQL)是 Oracle 对 sql 语言的过程化扩展,指 在 SQL 命令语言中增加了过程处理语句( ...
- Oracle入门(十三)之SQL的DML
数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT.UPDATE.DELETE三种指令为核心,分别代 ...
- oracle输入数字类型吗,PL/SQL Number数字类型函数
PL/SQL Number数字类型函数 更新时间:2007年03月21日 00:00:00 作者: ABS(x) 函数,此函数用来返回一个数的绝对值. ACOS(x)函数,返回X的反余弦值.X范围 ...
- Oracle数据库第二课——使用PL/SQL进行初步编程,了解PL/SQL的相关知识
知识点:了解PL/SQL的编程的基础:了解PL/SQL的注释:掌握PL/SQL的块结构:掌握PL/SQL的数据类型.运算符.字符集.标识符:掌握PL/SQL语句块的书写.变量的声明和赋值 1.PL/S ...
- oracle学习(二)pl/sql基础
pl/sql组成:DDL DML DCL pl/sql特点: SQL&PL/SQL编译器集成PL/SQL,支持SQL所有范围的语法 支持CASE语句和表达式 继承和动态方法释放 类型进化.属性 ...
最新文章
- PHP替换字符串函数strtr()和str_replace()
- Python 3.5 socket OSError: [Errno 101] Network is unreachable
- yunyang1994 tensorflow_yolov3 ./checkpoint/yolo3_coco_demo.ckpt does not exist !!! Now it starts to
- 判断直线与线段是否相交,相交则输出交点x轴坐标
- JAVA学习--面向对象的特征二:继承性
- 【ACM】nyoj_305_表达式求值_201308081018
- 开机一直转圈_电脑开机后网络一直转圈,程序也打不开?
- 都是写需求,高手和菜鸟为何差别这么大?
- Bottle: Python Web Framework
- pattern in java_Java里的生产者-消费者模型(Producer and Consumer Pattern in Java)
- 移动视频录传-公网对讲APP-MCP常见操作说明
- 【ONNX】使用 C++ 调用 ONNX 格式的 PyTorch 深度学习模型进行预测(Windows, C++, PyTorch, ONNX, Visual Studio, OpenCV)
- 工行u盾显示316_工行U盾常见故障处理
- IDEA插件系列(67):ReadHub插件——新闻阅读器
- 浙江中医药大学第十二届大学生程序设计竞赛 部分题解
- iOS 开发者必不可少的 75 个工具,你都会了吗
- Linux系统安装与使用基础之第二篇熟悉Linux操作系统
- 魅族 刷机android 6.0,乐视X900+安卓6.0 魅族Flyme6刷机包 最新6.7.12.29R付费纯净版
- 【SRS】ATC模式和时间抖动矫正
- gparted给ubuntu系统扩容
热门文章
- [MyBatisPlus]MyBatisX插件
- [数据结构-严蔚敏版]P95矩阵压缩-特殊矩阵的存储(对称矩阵,三角矩阵)
- [Java基础]反射获取成员方法并使用练习
- 今年暑假不AC-贪心
- 《C++ Primer》第一章的 Sales_item.h头文件源码
- Minimum Inversion Number HDU - 1394(求一个数字环的逆序对+多种解法)
- 表空间oracle查询,Oracle表和表空间查询
- linux下I2C驱动发送IO时序,I2C驱动情景分析——怎样控制I2C时序
- Codeforces Beta Round #11 B. Jumping Jack 思维
- CF1526 D. Kill Anton