PL/SQL - Oracle 代码块

2023-12-13 04:06:39

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

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;

该处使用的url网络请求的数据。


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;

在这里插入图片描述
注:输出记录型变量里面的某个内容:变量名.列名

二、有名块

三、判断分支

  • if else判断语句
  • case when 判断语句

四、循环嵌套(for,while,loop)

  • for 循环
  • while 循环
  • loop 循环

文章来源:https://blog.csdn.net/weixin_42321155/article/details/132722407
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。