大数据最全Oracle-PL SQL编程_oracle 分块sql(3)

本文详细介绍了PL/SQL中的数据类型(包括基本和特殊),如数值、字符、日期、布尔和大对象类型,以及变量的定义、赋值、作用域和常量的使用。此外,还涵盖了条件语句(if,case,else,elsif)和循环语句(loop,for)的语法和应用。
摘要由CSDN通过智能技术生成
declare
	声明部分
  begin
    执行部分
  exception
    异常处理部分
  end

二、常量

1、基本数据类型

1:数值类型
number,number(x,y),x是有效位,y是小数位,例如number(5,2)表示定义一个有效位是5位,小数位是2的。
2:字符类型
varchar2,char
varchar2用于存储可变长度的字符串,char类型用于存储指定长度的字符串。
3:日期类型
date,timestamp
data类型存储日期和时间信息,timestamp存储于data类似,不过还包括秒的小数部分
4:布尔类型
boolean
5:lob类型
blob,clob,nclob,bfile
clob,nclob存放文本数据,blob存放二进制数据,bfile存放指向操作系统文件的指针。

2、特殊数据类型

除了上面的基本数据类型,PL/SQL还提供了3种特殊的数据类型,这3种数据类型都是在基本数据类型基础上建立的。

语法格式如下

type myrecord is record(
field1 datatype [not null][:=default value]
)

定义一个记录类型myrecord,用于存储student表中的学生姓名和班级名称

declare
	type myrecord is record
	my_name varchar2<20>,
	my_class varchar2<20>;
	Myrecord myrecord;
	begin
		select name,class into myrecord from student where id = 1;
		dbms_output.put_line<'所查询的学生姓名是:' || Myrecord.my_name ||',他的班级是:‘|| Myrecord.my_class >;
	end;	

3、%type类型

在oracle中我们经常用到字段的数据类型,当我们定义一个数据类型想和表中已有的字段类型一致的时候我们可以使用%type类型,例如我们声明一个与student表中name字段类型一致的var_name

var_name student.name%type

4、%rowtype类型

通过名字可以看出rowtype是表示数据表中某一行的所有数据类型,所以用他定义以后可以记录一行数据。例如声明一个用于存储student表中每行记录的变量var_row

var_row student %rowtype

声明一个用于存储student表中id=1的一行记录var_row,并显示基本信息

declare
	var_row student%rowtype;
begin
	select \* into var_row from student where id =1;	
	dbms_output.put_like<'所查询的学生姓名是:' || var_row.name>
end;

5、记录表类型

上面我们说的那些类型只能存储一个数据,或者一行数据,不能存储多行数据,现在我们需要存储多行数据。语法如下

type 记录表类型名称 is table of 类型 index by binary_integer

定义一个记录表类型用于存储student表中的数据,并显示

declare
	type mytabletype is table of student%rowtype index by binary_integer;
	Mytable mytabletype;
begin
	select \* into mytable<1> from student where id = 1;
	select \* into mytable<2> from student where id = 2;
	dbms_output.put_line<'学生姓名是:'|| mytable<1>.name>;
	dbms_output.put_line<'学生姓名是:'|| mytable<2>.name>;
end;	

三、变量

1、变量的定义

我们必须先在声明部分定义变量,与其他编程语言不通,PL/SQL语言中要求变量名在前,数据类型在后面,定义变量的语法如下。

变量名 数据类型 [默认值 |: = 初始值]

例如下面的代码

var_name varchar2(20):='张三'

2、变量的赋值

1:直接赋值

name:='张三';
age:=age+10;

2:交互赋值

name:=&temp;

运行此代码会提示输入temp的值,然后把输入的值赋给name变量

3:使用select查询语句中的into子句

select name into name_temp from student where id = 1;

3、变量的作用域

变量的作用域,在一般的PL/SQL快中,变量的作用域从声明开始,一直到块的结束。如果存在块嵌套,则外部声明的为全局变量,可以在外部使用也可以在内部使用。

四、常量的定义

1、常量

常量的值在程序运行过程中保持不变,常量的声明方式与变量类似,但要包括关键字constant,常量定义的同时要赋予初值,如下所示。

pi constant number:=3.1415;

五、条件语句

if
case

1、if语句

有三种形式:if…then语句、if…then…else语句和if…then…elsif语句。

1、if…then语句

基本语法格式如下

if 条件表达式 then
语句序列;
end if;

当条件表达式结果是true时,程序运行then下面的语句序列,如果为false时,则跳过then下面的内容而去运行end if后面的语句。

2、if…then…else语句

基本语法格式如下

if 条件表达式 then
语句序列1;
else
语句序列2;
end if;

当条件表达式结果是true时,程序运行语句序列1,如果为false时,运行语句序列2。

3、if…then…elseif语句

基本语法格式如下

if 条件表达式 1 then
语句序列1;
elseif 条件表达式2
语句序列2;
...
else
条件表达式n
end if;

当条件表达式结果是true时,程序运行语句序列1,如果为false时,运行语句序列2。

2、case语句

语法如下

case 选择器表达式
	when 条件 1 then 语句序列 1;
	when 条件 2 then 语句序列 2;
	...
	when 条件 n then 语句序列 n;
	else 语句序列 n+1;
	end case;

六、循环语句

loop
while
for

1、loop循环

这种循环将循环条件包含在循环体内,loop循环会先执行一次循环体,然后判断是否满足设定的条件来决定循环是否继续执行。语法格式如下

loop
语句序列;


![img](https://img-blog.csdnimg.cn/img_convert/c3cc1ac7d1d14a15b7267ae196364ed5.png)
![img](https://img-blog.csdnimg.cn/img_convert/9efa05a122c4615a770f6769102c954c.png)
![img](https://img-blog.csdnimg.cn/img_convert/83a316ae244f1adbe7198a56e63f1eb8.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**

## 1、loop循环



> 
> 这种循环将循环条件包含在循环体内,loop循环会先执行一次循环体,然后判断是否满足设定的条件来决定循环是否继续执行。语法格式如下
> 
> 
> 



loop
语句序列;

[外链图片转存中…(img-ccZbE4qh-1714769048804)]
[外链图片转存中…(img-QV4tP7Li-1714769048805)]
[外链图片转存中…(img-5lxH7nsm-1714769048805)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值