目录
-- 语法结构:
-- 声明数值变量
-- 声明字符串变量
-- 可以给字符串变量赋予数字
-- 通过查询表的数据给变量赋值
-- 其他方式的变量声明类型
%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 行,或者多行.
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;
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;