PLSQL 简介及基本语法

什么是PL/SQL

PLSQL 是 Oracle 对 sql 语言的过程化扩展,指在 SQL 命令语言中增加了过程处理语句(如分支、循环等),使 SQL 语言具有过程处理能力。把 SQL 语言的数据操纵能力与过程语言的数据处理能力结合起来,使得 PLSQL 面向过程但比过程语言简单、高效、灵活和实用

PL/SQL 是是由甲骨文公司在 90 年代初开发,以提高 SQL 的功能。
PL/SQL 是嵌入在 Oracle 数据库中的三个关键的编程语言之一(只有 oracle支持)
PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言

PL/SQL 的工作原理

1、 PL/SQL 引擎接受 PL/SQL 块并对其进行编译执行
2、 该引擎执行所有过程语句
3、 将 SQL 语句发送给 Oracle 的 SQL 语句执行器

PL/SQL 基本结构及语法

--定义变量,说明部分 (变量说明,游标申明,例外说明 〕
[declare]
--程序体的开始
begin 语句序列(DML 语句)--异常处理[exception]
--程序体的结束
end;

示例:

--书写第一个 plsql 程序块 打印输出字符串
begin --打印输出dbms_output.put_line('hello plsql');
end;

变量

变量名与 java 中变量名的定义一样,长度不能超过 32 位
语法:变量名 变量类型
v_name varchar2(20);

变量基本类型:

varchar2() 32767 个字节
char() 32767
number(m,n)
date
boolean true/false/null
binary_integer 整型

变量赋值:

变量在定义时可以初始化,使用 := 赋值
v_name varchar2(20) := ‘hello’;

常见类型的变量定义并赋值

declarev_name varchar2(20) := 'hello';v_id binary_integer := 12;v_pai number(3,2) := 3.14;v_sex char(1) := 'm';v_married boolean := true;v_date date := sysdate;
begindbms_output.put_line(v_name);dbms_output.put_line(v_id);dbms_output.put_line(v_pai);dbms_output.put_line(v_sex);
-- if 判断 后面会学if v_married thendbms_output.put_line('married');elsedbms_output.put_line('no marry');end if;dbms_output.put_line(v_date);
end;

变量的复合类型

表类型
类似于 java 中的数组,用来存储某种特定数据类型的数据

语法:
type 表类型名称 is table of 类型 index of binary_integer;

declaretype table_type is table of varchar2(20) index by binary_integer;v_name table_type;
beginselect name into v_name(0) from t_user where id=1;select name into v_name(1) from t_user where id=123;dbms_output.put_line(v_name(0));
end;

简化的表类型
定义一个变量,其数据类型与已经定义的某个数据变量(尤其是表的某一列)类型一致时使用简化编程

语法:%type
t_user.name%type; 表示类型是 t_user.name 字段的类型

declarev_name t_user.name%type;
beginselect name into v_name from t_user where id=1;dbms_output.put_line(v_name);
end;

记录类型
作用:可以用来存储一条记录 类似于 java 中的 对象数组

语法:
type 记录类型名 is record(变量名 类型 [,变量名 类型…])

declaretype row_type is record(v_id binary_integer,v_name varchar2(20));v_record row_type;
beginselect id,name into v_record.v_id , v_record.v_name from t_user where id=1;dbms_output.put_line(v_record.v_id);dbms_output.put_line(v_record.v_name);
end;

作用:如果数据类型和数据库中表的结构一致时可以使用记录类型,返回一个记录类型

简写:
%rowtype: 取表中的一条记录中的字段类型组成一个记录类型temp_emp%rowtype 表示当前变量的类型是跟 t_user 表中的记录类型一致

declarev_user temp_emp%rowtype;
beginselect id,name,age into v_user.id,v_user.name,v_user.agefrom t_user where id=1;dbms_output.put_line(v_user.id || v_user.name || v_user.age);
end;

传参

定义形参使用& ,如果是字符类型需要使用’’引起来

declaretype table_type is table of varchar2(20) index by binary_integer;v_name table_type;
beginselect ename into v_name(0) from emp where empno=&no;dbms_output.put_line(v_name(0));
end;

更多相关知识请戳我主页哦,点个赞也行哦,谢谢!

PL/SQL 简介及基本语法相关推荐

  1. pl/sql块的基本语法

    创建一个触发器: create or replace trigger trigafter insert--触发器时间on emp--在哪一个表上创建的触发器,触发对象for each row--说明创 ...

  2. oracle游标语法举例,PL/SQL语句块基本语法(ORACLE存储过程,函数,包,游标)

    1.PL/SQL语句块 PL/SQL语句块只适用于Oracle数据库,使用时临时保存在客户端,而不是保存在数据库. 基本语法: declare 变量声明.初始化 begin 业务处理.逻辑代码 exc ...

  3. Oracle入门(十四.1)之PL / SQL简介

    一.PL / SQL描述 程序语言扩展到SQL: •允许将基本程序逻辑和控制流与SQL语句组合在一起. •是Oracle专有编程语言. - 它只能用于Oracle数据库或工具. 二.程序语言扩展到SQ ...

  4. 结束下面sql块_oracle: PL/SQL基本结构,语法,变量

    PL/SQL是基于块结构,不论是命名块还是匿名块都由3个部分组成 定义部分:定义常量,变量,游标,基础及复杂数据类型 执行部分:包含要执行的PL/SQL语句,sql语句,实现应用模块功能 异常处理部分 ...

  5. oracle sql循环判断语句怎么写,Oracle 非常详细的 PL/SQL入门教程,PL/SQL语法格式/循环语句/条件判断/异常处理...

    PL/SQL入门教程目录 Oracle PL/SQL入门教程,PL/SQL语法格式/循环语句/条件判断/异常处理 一.PL/SQL简介 1.PL/SQL简介 1.PL/SQl是过程语言PL与结构化语言 ...

  6. PL/SQL 处理流程

    P249 -P254  oracle8i_9i数据库基础--查看本号百度文库 ***********PL/SQL 简介*************** 1.PL/SQL 是过程语言(Procedural ...

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

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

  8. Oracle数据库学习:PL/SQL(详解)

    Oracle数据库学习:PL/SQL 什么是PL/SQL PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的扩展语言; 使用PL/SQL 可以编写具 ...

  9. SQL Plus和PL/SQL

    SQL Plus和PL/SQL SQL Plus与PL/SQL简介 交互工具:SQL Plus是 Oracle提供的一种用户接口. 交互语言:PL/SQL则是Oracle的过程化编程语言. 使用SQL ...

最新文章

  1. 读取.bin激光雷达点云文件格式并可视化
  2. 移动产品经理必须要知道的11件事
  3. 复现经典:《统计学习方法》第 9 章 EM 算法及其推广
  4. 《金色梦乡》金句摘抄(六)
  5. python怎么放音乐_python怎么播放音乐
  6. 明年起,汉语正式纳入俄罗斯“高考”,光看题目我都要笑出声了!
  7. 如何去设计前端框架能力?星巴克消息开放项目从0到1,从点到面的思考
  8. MySQL Range Optimization
  9. Visual Studio中的第一个Django-Python应用程序
  10. c/c++入门教程 - 3 职工管理系统 完整代码
  11. java批量导入功能,java使用POI批量导入excel数据的方法
  12. 2013年阿里巴巴实习生笔试题
  13. (必读)工业机器人基础教程——快速入门学习
  14. python小课风变编程_风变编程Python小课最近很火,大家学完感受如何?
  15. vsftpd的安装及使用
  16. 云栖社区 Tensorflow快餐教程
  17. JPA、EJB、事物管理、WebSphere ---相关内容整理
  18. 动漫设计与制作计算机专业,计算机动漫设计与制作专业(毕业论文).doc
  19. python生存曲线_知识分享 | 生存分析: 在 Python 中的实现(下篇)
  20. BitComet Stable (build 1.66.4.13) 比特彗星-使用教程

热门文章

  1. ExpressGridPack 21,PivotGrid 控件
  2. 说个轻松赚 5000 块的门路
  3. 浅谈对美国主机进行空间设计的方法
  4. labelImg图像标注工具的详细使用
  5. b站唐老师人工智能基础知识笔记
  6. 企业邮箱哪家好,什么企业邮箱安全稳定好用?
  7. java应届生简历个人技能该怎么写?
  8. 【windows】rm文件
  9. 京东万象:通过以太坊联盟链解决数据流通的信任难题
  10. 智能UI:面向未来的UI开发技术