PL/SQL

pl/sql的基本概念

PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询组织在PL/SQL代码的过程中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL只有Oracle数据库有。

DEMO:第一个pl/sql程序

BEGIN --表示开始过程
 
  NULL; --过程代码

END;--过程结束

/

在这里插入图片描述
DEMO:输出hello world

--开启打印功能
SET SERVEROUTPUT ON;

BEGIN    --表示开始过程

	 DEMS_OUTPUT.put_line('Hello world'); --过程代码

END; --过程结束

/

在这里插入图片描述

定义变量

DECLARE

	 v_num NUMBER;  --声明一个全局变量

BEGIN  --表示开始过程

		DBMS_OUTPUT.put_line('变量的值是:'|| v_num);  --过程代码

END; --过程结束

/

在这里插入图片描述

  • 字符串的连接使用的不是 “+” 而是 "||"
  • 全局变量的声明放在DECLARE关键字之后
  • 如果声明了变量但是没有赋值则默认就是空

为变量赋值

DECLARE
	
	v_num NUMBER;  --定义了变量

BEGIN  --表示开始过程
	
	v_num=30; --为变量赋值
	
	DBMS_OUTPUT.put_line('变量的值是:' || v_num ); --过程代码

END;

/

在这里插入图片描述

给变量设置默认值

DECLARE

 v_num NUMBER:=100;  

BEGIN

	DBMS_OUTPUT.put_line('变量的值是:' || v_num ); 

END;

/

在这里插入图片描述
可以在DECLARE后面声明变的时候给出默认值,如果在BEGIN之后没有为变量赋新的值则按照默认的值输出。

根据雇员的编号查询出雇员的名字

DECLARE

	v_empo NUMBER; --保存雇员编号
 
 	v_ename VARCHAR2(100); --保存编号

BEGIN  --表示开始过程
	
	DBMS_OUTPUT.put_line(‘请输入编号!’);
 
 	v_empno:=&empno;

--开始查询
	
	SELECT ename INTO v_ename
	
		FROM emp
 		
 			WHERE empno=v_empno;

DBMS_OUTPUT.put_line('编号是:' || v_empno ||', 名字是: ' || 
v_ename); --过程代码

END; --过程结束

/

在这里插入图片描述

pl/sql中的程序控制

定义常量

DECLARE

	 v_empno CONSTANT NUMBER;

BEGIN
	
	DBMS_OUTPUT.put_line('编号是:' || v_empno);

END;

/
在这里插入图片描述

DECLARE
	
	v_empno CONSTANT NUMBER:='7788';--常量必须有初始值

BEGIN
	
	DBMS_OUTPUT.put_line('编号是:' || v_empno);

END;

/

在这里插入图片描述

使用%TYPE定义变量的类型

DECLARE
	v_empno emp.empno%type; --表示变量的类型就是emp数据中的empno字段的类型(number)
 	v_ename emp.ename%TYPE; -- 表示变量的类型就是emp数据表中的ename 字段的类型(VARCHAR2)
BEGIN
	DBMS_OUTPUT.put_line('请输入编号!');
	v_empno:=&empno;;
	SELECT ename INTO v_ename
    	FROM emp
		 WHERE empno=v_empno;
DBMS_OUTPUT.put_line('编号是:' || v_empno ||', 名字是: ' ||  v_ename);
END;
/

在这里插入图片描述

  • “表名.字段名%TYPE”: 让变量的类型为指定的表的字段的类型

使用%ROWTYPE声明变量

DECLARE
	
	v_empno emp.empno%type; --表示变量的类型就是emp数据中的empno字段的类型(number)
 	
 	v_result emp%ROWTYPE; -- 表示该变量可以接受查询到的所有字段的数据

BEGIN
	
	DBMS_OUTPUT.put_line('请输入编号!');
	
	v_empno:=&empno;;
	
	SELECT * INTO v_result
    	
    	FROM emp
		
		 WHERE empno=v_empno;

DBMS_OUTPUT.put_line('编号是:' || v_empno ||', 名字是: ' ||  v_ename);

END;

/

在这里插入图片描述

IF使用

DECLARE 
	
	v_count NUMBER;

BEGIN
	
	SELECT COUNT(*) INTO v_count
		
		FROM emp;
	
	IF v_count>10 THEN
		
		DBMS_OUTPUT.put_line(‘数据量大于10’);

END IF;   --表示if结束

END;  --过程结束

/

if else

DECLARE 
	
	v_count NUMBER;

BEGIN
	
	SELECT COUNT(*) INTO v_count
		
		FROM emp;
	
	IF v_count>10 THEN
		
		DBMS_OUTPUT.put_line(‘数据量大于10’);
	
	ELSE
		
		DBMS_OUTPUTput_line('数值量小于或者等于10');    

END IF;   --表示if结束

END;  --过程结束

/

多if结构

DECLARE 
	
	v_count NUMBER;

BEGIN
	
	SELECT COUNT(*) INTO v_count
		
		FROM emp WHERE job='SALESMAN';
	
	IF v_count>10 THEN
		
		DBMS_OUTPUT.put_line(‘数据量大于10’);
	
	ELSIF v_count<10 THEN
		
		DBMS_OUTPUT.put_line('数据量小于10');
	
	ELSE
	
		DBMS_OUTPUT.put_line('数据量等于10');

END IF;   --表示if结束

END;  --过程结束

/

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值