您的位置:首页 > 数据库

PL/SQL 简介及基本语法

2020-01-14 20:09 976 查看

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’;

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

declare
v_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;
begin
dbms_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 then
dbms_output.put_line('married');
else
dbms_output.put_line('no marry');
end if;
dbms_output.put_line(v_date);
end;

变量的复合类型

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

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

declare
type table_type is table of varchar2(20) index by binary_integer;
v_name table_type;
begin
select 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 字段的类型

declare
v_name t_user.name%type;
begin
select name into v_name from t_user where id=1;
dbms_output.put_line(v_name);
end;

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

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

declare
type row_type is record(v_id binary_integer,v_name varchar2(20));
v_record row_type;
begin
select 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 表中的记录类型一致

declare
v_user temp_emp%rowtype;
begin
select 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;

传参

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

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

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

  • 点赞 1
  • 收藏
  • 分享
  • 文章举报
BIGPLANS 发布了33 篇原创文章 · 获赞 26 · 访问量 1088 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: