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进行投诉反馈,一经查实,立即删除!