PL/SQL - Oracle 代码块
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
PL/SQL - Procedural Language 过程化语言
前言
提示:这里可以添加本文要记录的大概内容:
PL/SQL (Procedural Language 过程化语言 ),过程化的结构化查询语言。添加的过程化语言的部分内容:有判断分支,有循环嵌套(for,while,loop)。
PL/SQL提升了SQL的功能,使它成为一种功能更强大的一种程序设计语言。
过程化的结构化查询语言的代码是存在块结构当中,也叫代码块;
代码块:有匿名块(语句块),有名块(存储过程,自定义函数,触发器…)。其中,匿名块不存在于数据库内,而是存在于缓冲区中。
提示:以下是本篇文章正文内容,下面案例可供参考
一、匿名块(语句块)
匿名块(语句块)顾名思义就是未命名的代码块。可直接编辑执行,无需调用。
语法结构:
declare(声明)
变量的声明和定义的部分;
begin(开始部分)
语句的逻辑和执行的部分;
end;
1.代码块中的变量
变量是什么?
-
变量是一个容器,在这个容器里面,我们可以去定义这个容器需要去装载的内容的类型,然后将不同的值放入到容器中。
-
变量的命名:以字母带头,可以结合数字,下划线来命名
注:不可以用数字开头
-
常量[constant]
:只能进行一次初始化赋值,后面不可再进行赋值;
变量
:可以不断赋值;
语法:
变量名 变量类型(长度);
变量名 变量类型(长度) := 初始化值 ;
常量名 constant 数据类型(长度):=‘初始化值’; --常量
举例如下:
str varchar2(30);
str2 varchar2(30) :='hello Oracle';
nu number;
nu1 number :=10;
da date;
da1 date :=date'2023-09-06'
变量声明 和 输出
declare
a varchar2(30) :='hello word'; --变量声明与初始化
--a constant varchar2(20) :='hello oracle';
--a date ;
b date:=date'2023-08-19';
begin
--a:= sysdate;
a:='kong long kang lang';
dbms_output.put(a||'不换号输出'); --不换行输出要与换行输出结合,不然看不到输出结果
dbms_output.put_line(a); --换行输出
dbms_output.put_line('输出的a值是:'||a); --变量与字符之间的输出通过管道符 || 连接
dbms_output.put_line('输出的b值是:'||b);
end;
注:字符串间的拼接,通过管道符 || 进行拼接。
注:代码块的输出结果如上图箭头所指方向可见。
输出语句:
1.dbms_output.put()
输出后不换行
2.dbms_output.put_line()
输出后自动换行
注:
用完不换行输出语dbms_output.put() 后,一定要紧接着用一个会换行的一个输出语句; 1 必须配合 2 来结合使用;
2.用select … into 对变量进行赋值
将一个select语句查询的结果放在变量中进行保存。
注:select ... into 的句子,如果查询的数据有很多行,或者没有数据,都会报错,只能查询有且仅有一条数据的结果。
语法:select 列名 into 变量名 from 表名 ...
代码如下(示例):
将员工编号为7788的工资数值赋值给变量s。
declare
s number;
begin
select sal into s from emp where empno=7788;
dbms_output.put_line('输出的s值是:'||s);
end;
a.引用型变量
引用型变量 :将一个列的数据类型声明给一个变量。
语法: 变量名 表名.列名%type;
代码如下(示例):
declare
u_sal emp.sal%type;
begin
select sal into u_sal from emp where empno=7788;
dbms_output.put_line('输出的u_sal的值是:'||u_sal);
end;
b.记录型变量
记录型变量 :用一个变量的名字,来保存一整行的数据。
语法: 变量名 表名%rowtype;
代码如下(示例):
declare
u emp%rowtype;
begin
select * into u from emp where empno=7788;
dbms_output.put_line('输出的u值是:'||u.sal||' '||u.ename);
end;
注:输出记录型变量里面的某个内容:变量名.列名
二、有名块
- 存储过程
- 自定义函数
- 触发器…
- 游标 cursor
- 动态SQL
三、判断分支
- if else判断语句
- case when 判断语句
四、循环嵌套(for,while,loop)
- for 循环
- while 循环
- loop 循环
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!