PL/SQL变量

目录

-- 语法结构:

-- 声明数值变量

-- 声明字符串变量 

-- 可以给字符串变量赋予数字

-- 通过查询表的数据给变量赋值

-- 其他方式的变量声明类型

%TYPE 引用数据库中的某列的数据类型或某个变量的数据类型

%ROWTYPE 引用数据库中的一行(所有字段)作为数据类型

--常量


-- 语法结构:
DECLARE
-- 声明的地方(变量,常量,游标)
BEGIN
  -- 代码的执行逻辑  
END; 
-- 声明数值变量
DECLARE
  X NUMBER;
  Y NUMBER;
  Z NUMBER;
BEGIN
  X := 6;
  Y := 7;
  Z := X + Y;
  DBMS_OUTPUT.put_line(Z);
END;
-- 声明字符串变量 
DECLARE 
X VARCHAR2(10);
Y VARCHAR2(10);
Z VARCHAR2(10);
BEGIN
 X:='AAA';
 Y:='BBB';
 Z:= X || Y; 
DBMS_OUTPUT.put_line(Z);
END;
-- 可以给字符串变量赋予数字
DECLARE 
X VARCHAR2(10);
Y VARCHAR2(10);
Z VARCHAR2(10);
BEGIN
 X:='&请输入X';
 Y:='&请输入Y';
 Z:= X || Y; 
DBMS_OUTPUT.put_line(Z);
END;
-- 当需要手动传参的时候,赋予 '&' ,即可手动传入参数
-- 通过查询表的数据给变量赋值
SELECT 
字段1,
字段2,
字段3,
...
into 
变量1,
变量2,
变量3 
...
from 表名

例子: --根据输入的员工编号,输出对应员工的姓名,职业,薪资.

DECLARE 
-- 根据需求,定义变量
V_NO NUMBER;        -- 员工编号
V_NAME VARCHAR2(10);-- 员工姓名
V_JOB VARCHAR2(10); -- 员工职业
V_SAL NUMBER;       -- 薪资
BEGIN
  -- 根据需求,定义一个输入的变量
  V_NO:='&请输入一个员工工号';
  
  -- 写 sql 逻辑 将 查询的值 赋予到对应的变量中 
  SELECT 
  E.ENAME,
  E.JOB,
  E.SAL
  INTO V_NAME,V_JOB,V_SAL 
  FROM EMP E
  WHERE E.EMPNO=V_NO;-- 根据传入的员工编号筛选数据
  
-- 输出结果:
DBMS_OUTPUT.put_line('员工姓名:'|| V_NAME);
DBMS_OUTPUT.put_line('员工职业:'|| V_JOB);  
DBMS_OUTPUT.put_line('员工工资:'|| V_SAL);  
  
END;

-- 使用  SELECT INTO 需要注意的点
1.> 使用 SELECT INTO 对变量赋值,查询出来的结果和后面 INTO 的变量,在 (数量),(类型),(顺序)要保持一致.
2.> 数字的列可以放入到字符串的变量中
3.> 变量只能赋予单个值,使用查询赋值时,需要注意返回的行数,必须是一行数据,不能是 0 行,或者多行.

-- 其他方式的变量声明类型
%TYPE 引用数据库中的某列的数据类型或某个变量的数据类型
DECLARE 
V_NO EMP.EMPNO%TYPE; -- 引用 EMP 表中 EMPNO 字段的数据类型
V_JOB EMP.JOB%TYPE; 
BEGIN
SELECT 
E.EMPNO,
E.JOB
INTO
V_NO,V_JOB
FROM EMP E
WHERE EMPNO=7369;
DBMS_OUTPUT.put_line(V_NO || V_JOB);  
END;

%ROWTYPE 引用数据库中的一行(所有字段)作为数据类型
 
DECLARE
V_EMP EMP%ROWTYPE; -- 将 表 EMP 中 一行的数据类型赋予变量
BEGIN
SELECT 
E.EMPNO,
E.ENAME,
E.JOB
INTO 
V_EMP.EMPNO,V_EMP.ENAME,V_EMP.JOB
FROM EMP E  
WHERE EMPNO=7369;
 DBMS_OUTPUT.put_line(V_EMP.EMPNO || V_EMP.ENAME || V_EMP.JOB); 
END;
--常量

常量在声明时赋予初值,并且在运行时,不允许重新赋值
CONSTANT

DECLARE
PI CONSTANT NUMBER:=3.1415926;--圆周率
R NUMBER:=3;
AREA NUMBER;
BEGIN
AREA:=PI*R*R;
 
DBMS_OUTPUT.put_line(AREA);
END;

你可能感兴趣的:(PL/SQL,sql,数据库)