一、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相关推荐

  1. Oracle数据库第四课——PL/SQL中的条件控制

    知识点: PL/SQL 有 3 种类型的条件控制结构:IF.ELSIF 和 CASE 语句.掌握 IF 语句的用法, 掌握 ELSIF 语句的用法, 理解嵌套 IF 语句的用法, 掌握 CASE 语句 ...

  2. 第十四章 使用SQL Shell界面(三)

    文章目录 第十四章 使用SQL Shell界面(三) SQL元数据.查询计划和性能指标 显示元数据 SHOW STATEMENT EXPLAIN and Show Plan SQL Shell Per ...

  3. 第十四章 使用SQL Shell界面(一)

    文章目录 第十四章 使用SQL Shell界面(一) 执行SQL的其他方式 调用SQL Shell GO命令 输入参数 执行ObjectScript命令 浏览命名空间 CALL 命令 执行SQL脚本文 ...

  4. oracle空间数据库实验报告,Oracle数据库实验报告六 PL/SQL基础

    Oracle数据库实验报告六 PL/SQL基础 -by QQC from BTBU [实验目的] PL/SQL的安装网上有很多教程这里就不做赘述了,如果后序需求大的话我再考虑做一期PL/SQL安装使用 ...

  5. 免安装Oracle客户端就能使用pl/sql developer

    所幸发现了一个Windows下免安装Oracle客户端就能使用pl/sql developer轻便的方法,分享:1, 从Technical Resources | Oracle ... htdocs/ ...

  6. Oracle(四):PL/SQL、存储函数、存储过程、触发器

    一.PL/SQL (一)什么是 PL/SQL PL/SQL(Procedure Language/SQL)是 Oracle 对 sql 语言的过程化扩展,指 在 SQL 命令语言中增加了过程处理语句( ...

  7. Oracle入门(十三)之SQL的DML

    数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT.UPDATE.DELETE三种指令为核心,分别代 ...

  8. oracle输入数字类型吗,PL/SQL Number数字类型函数

    PL/SQL Number数字类型函数 更新时间:2007年03月21日 00:00:00   作者: ABS(x) 函数,此函数用来返回一个数的绝对值. ACOS(x)函数,返回X的反余弦值.X范围 ...

  9. Oracle数据库第二课——使用PL/SQL进行初步编程,了解PL/SQL的相关知识

    知识点:了解PL/SQL的编程的基础:了解PL/SQL的注释:掌握PL/SQL的块结构:掌握PL/SQL的数据类型.运算符.字符集.标识符:掌握PL/SQL语句块的书写.变量的声明和赋值 1.PL/S ...

  10. oracle学习(二)pl/sql基础

    pl/sql组成:DDL DML DCL pl/sql特点: SQL&PL/SQL编译器集成PL/SQL,支持SQL所有范围的语法 支持CASE语句和表达式 继承和动态方法释放 类型进化.属性 ...

最新文章

  1. PHP替换字符串函数strtr()和str_replace()
  2. Python 3.5 socket OSError: [Errno 101] Network is unreachable
  3. yunyang1994 tensorflow_yolov3 ./checkpoint/yolo3_coco_demo.ckpt does not exist !!! Now it starts to
  4. 判断直线与线段是否相交,相交则输出交点x轴坐标
  5. JAVA学习--面向对象的特征二:继承性
  6. 【ACM】nyoj_305_表达式求值_201308081018
  7. 开机一直转圈_电脑开机后网络一直转圈,程序也打不开?
  8. 都是写需求,高手和菜鸟为何差别这么大?
  9. Bottle: Python Web Framework
  10. pattern in java_Java里的生产者-消费者模型(Producer and Consumer Pattern in Java)
  11. 移动视频录传-公网对讲APP-MCP常见操作说明
  12. 【ONNX】使用 C++ 调用 ONNX 格式的 PyTorch 深度学习模型进行预测(Windows, C++, PyTorch, ONNX, Visual Studio, OpenCV)
  13. 工行u盾显示316_工行U盾常见故障处理
  14. IDEA插件系列(67):ReadHub插件——新闻阅读器
  15. 浙江中医药大学第十二届大学生程序设计竞赛 部分题解
  16. iOS 开发者必不可少的 75 个工具,你都会了吗
  17. Linux系统安装与使用基础之第二篇熟悉Linux操作系统
  18. 魅族 刷机android 6.0,乐视X900+安卓6.0 魅族Flyme6刷机包 最新6.7.12.29R付费纯净版
  19. 【SRS】ATC模式和时间抖动矫正
  20. gparted给ubuntu系统扩容

热门文章

  1. [MyBatisPlus]MyBatisX插件
  2. [数据结构-严蔚敏版]P95矩阵压缩-特殊矩阵的存储(对称矩阵,三角矩阵)
  3. [Java基础]反射获取成员方法并使用练习
  4. 今年暑假不AC-贪心
  5. 《C++ Primer》第一章的 Sales_item.h头文件源码
  6. Minimum Inversion Number HDU - 1394(求一个数字环的逆序对+多种解法)
  7. 表空间oracle查询,Oracle表和表空间查询
  8. linux下I2C驱动发送IO时序,I2C驱动情景分析——怎样控制I2C时序
  9. Codeforces Beta Round #11 B. Jumping Jack 思维
  10. CF1526 D. Kill Anton