IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 存储过程(PLSQL) -> 正文阅读

[Java知识库]存储过程(PLSQL)

相当于“过程”(方法/函数),使数据库具备过程化处理能力(分支循环等)不区分大小写

程序结构

DECLARE
  -- 变量声明区(变量和游标的声明)
  I INTEGER;
BEGIN
  -- 执行区(相当于方法)
END;

Hello Word

BEGIN
	DBMS_OUTPUT.PUT_LINE("Hello Word");
END;

变量

普通类型(char varchar2 date number boolean long)

  • 变量的声明

-- 变量名  变量类型  (变量长度)
v_name varchar2(20);
  • 变量的复制(:= INTO)

DECLARE
  v_name VARCHAR2(20) := "张三";
  v_sal NUMBER;
  v_addr VARCHAR2(200);

BEGIN
  v_sal := 50000;
  SELECT addr INTO v_addr FROM bual WHERE name = "张三";
  
  DBMS_OUTPUT.PUT_LINE('姓名:' || v_name || '薪水' || v_sal || '地址' || v_addr);
END;

特殊类型 (引用型变量,记录型变量)

  • 引用型变量(变量的类型和长度取决于表中字段的类型和长度)

-- 表名.列名%TYPE指定变量的类型和长度
v_name emp.ename%TYPE;
DECLARE
	v_name VARCHAR2(20);
	v_sal NUMBER;
BEGIN
	SELECT ENAME, SAL INTO v_name,v_sal FROM EMP WHERE EPNO = 12;
	DBMS_OUTPUT.PUT_LINE('姓名:' || v_name || '薪水' || v_sal);
END;
DECLARE
	v_name EMP.ENAME%TYPE;
	v_sal EMP.SAL%TYPE;
BEGIN
	SELECT ENAME, SAL INTO v_name,v_sal FROM EMP WHERE EPNO = 12;
	DBMS_OUTPUT.PUT_LINE('姓名:' || v_name || '薪水' || v_sal);
END;
  • 记录型变量(记录表中一整行记录 相当于 java 中的对象)

-- 变量名称 表名%ROWTYPE
V_EMP EMP%ROWTYPE;
DECLARE
	V_emp EMP%ROWTYPE
BEGIN
	SELECT * INTO v_emp FROM EMP WHERE EMPNO = 123;
	DBMS_OUTPUT.PUT_LINE('姓名' || V_emp.ename);
END;

流程控制

条件分支

BEGIN
	IF 条件1 THEN 执行1
	  ELSIF 条件2 THEN 执行2
	  ELSE 执行3
	END IF;
END;

循环

BEGIN
	LOOP
		EXIT WHEN 推出循环条件
	END LOOP;
END;

游标(CURSOR)

用于临时存储一个查询返回的多行数据(结果集)

  • 声明 CURSOR 游标名[(参数列表)] IS 查询语句;

  • 打开 OPEN 游标名;

  • 读取 FETCH 游标名 INTO 变量列表;

  • 关闭 CLOSE 游标名;

游标属性

游标属性返回值类型说明
%ROWCOUNT整型获得FETCH返回的数据行数
%FOUND布尔最近的FETCH语句返回一行数据则为真,否则为假(游标里面有没有东西)
%NOTFOUND布尔与%FOUND返回值相反
%ISOPEN布尔游标已经打开时为真
  • 无参游标

DECLARE
	-- 声明游标
	CURSOR c_emp IS SELECT ENAME,SAL FROM EMP;
	-- 声明变量
	v_name EMP.ENAME%TYPE;
	v_sal EMP.SAL%TYPE;
BEGIN
	-- 打开游标
	OPEN c_emp;
	
	LOOP
		-- 读取游标
		FETCH c_emp INTO v_name,v_sal;
		-- 推出循环的条件
		EXIT WHEN c_emp%NOTFOUND;
		
		DBMS_OUTPUT.PUT_LINE('姓名:' || v_name || '薪水' || v_sal);
	END LOOP;
	-- 关闭游标
	CLOSE c_emp;
END;
  • 有参游标

DECLARE
	-- 声明有参数的有标
	CURSOR c_emp(v_deptno EMP.DEPTNO%TYPE) IS SELECT ENAME,SAL FROM EMP WHERE DEPTNO = v_deptno;
	v_name EMP.ENAME%TYPE;
	v_sal EMP.SAL%TYPE;
BEGIN
	-- 打开有参游标并传参
	OPEN c_emp(12);
	
	LOOP
		FETCH c_emp INTO v_name,v_sal;
		
		EXIT WHEN c_emp%NOTFOUND;
		
		DBMS_OUTPUT.PUT_LINE('姓名:' || v_name || '薪水' || v_sal);
	END LOOP;
	
	CLOSE c_emp;
END;

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:08:22  更:2021-10-09 16:10:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 21:11:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码