PL/SQL 简介及基本语法
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 简介及基本语法相关推荐
- pl/sql块的基本语法
创建一个触发器: create or replace trigger trigafter insert--触发器时间on emp--在哪一个表上创建的触发器,触发对象for each row--说明创 ...
- oracle游标语法举例,PL/SQL语句块基本语法(ORACLE存储过程,函数,包,游标)
1.PL/SQL语句块 PL/SQL语句块只适用于Oracle数据库,使用时临时保存在客户端,而不是保存在数据库. 基本语法: declare 变量声明.初始化 begin 业务处理.逻辑代码 exc ...
- Oracle入门(十四.1)之PL / SQL简介
一.PL / SQL描述 程序语言扩展到SQL: •允许将基本程序逻辑和控制流与SQL语句组合在一起. •是Oracle专有编程语言. - 它只能用于Oracle数据库或工具. 二.程序语言扩展到SQ ...
- 结束下面sql块_oracle: PL/SQL基本结构,语法,变量
PL/SQL是基于块结构,不论是命名块还是匿名块都由3个部分组成 定义部分:定义常量,变量,游标,基础及复杂数据类型 执行部分:包含要执行的PL/SQL语句,sql语句,实现应用模块功能 异常处理部分 ...
- oracle sql循环判断语句怎么写,Oracle 非常详细的 PL/SQL入门教程,PL/SQL语法格式/循环语句/条件判断/异常处理...
PL/SQL入门教程目录 Oracle PL/SQL入门教程,PL/SQL语法格式/循环语句/条件判断/异常处理 一.PL/SQL简介 1.PL/SQL简介 1.PL/SQl是过程语言PL与结构化语言 ...
- PL/SQL 处理流程
P249 -P254 oracle8i_9i数据库基础--查看本号百度文库 ***********PL/SQL 简介*************** 1.PL/SQL 是过程语言(Procedural ...
- Oracle数据库第二课——使用PL/SQL进行初步编程,了解PL/SQL的相关知识
知识点:了解PL/SQL的编程的基础:了解PL/SQL的注释:掌握PL/SQL的块结构:掌握PL/SQL的数据类型.运算符.字符集.标识符:掌握PL/SQL语句块的书写.变量的声明和赋值 1.PL/S ...
- Oracle数据库学习:PL/SQL(详解)
Oracle数据库学习:PL/SQL 什么是PL/SQL PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的扩展语言; 使用PL/SQL 可以编写具 ...
- SQL Plus和PL/SQL
SQL Plus和PL/SQL SQL Plus与PL/SQL简介 交互工具:SQL Plus是 Oracle提供的一种用户接口. 交互语言:PL/SQL则是Oracle的过程化编程语言. 使用SQL ...
最新文章
- 读取.bin激光雷达点云文件格式并可视化
- 移动产品经理必须要知道的11件事
- 复现经典:《统计学习方法》第 9 章 EM 算法及其推广
- 《金色梦乡》金句摘抄(六)
- python怎么放音乐_python怎么播放音乐
- 明年起,汉语正式纳入俄罗斯“高考”,光看题目我都要笑出声了!
- 如何去设计前端框架能力?星巴克消息开放项目从0到1,从点到面的思考
- MySQL Range Optimization
- Visual Studio中的第一个Django-Python应用程序
- c/c++入门教程 - 3 职工管理系统 完整代码
- java批量导入功能,java使用POI批量导入excel数据的方法
- 2013年阿里巴巴实习生笔试题
- (必读)工业机器人基础教程——快速入门学习
- python小课风变编程_风变编程Python小课最近很火,大家学完感受如何?
- vsftpd的安装及使用
- 云栖社区 Tensorflow快餐教程
- JPA、EJB、事物管理、WebSphere ---相关内容整理
- 动漫设计与制作计算机专业,计算机动漫设计与制作专业(毕业论文).doc
- python生存曲线_知识分享 | 生存分析: 在 Python 中的实现(下篇)
- BitComet Stable (build 1.66.4.13) 比特彗星-使用教程