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

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

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
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值