PL/SQL块的结构

-- 1. 声明变量时,必须要指定类型
-- 2. 变量名需要先赋值,后使用
-- 3. 变量名没有默认值(表现是空,无意义)
--PL/SQL块的结构
DECLARE
V_NAME varchar2(20) := '雨女无瓜';
BEGIN
DBMS_OUTPUT.put_line(V_NAME||'的第一条PL/SQL语句');
END;

--与用户交互输入参数
declare
v_name varchar2(20):= '&input_name';
begin
dbms_output.put_line(v_name||'的第一条PL/SQL语句');
end;

DECLARE
v_name1 varchar2(32);
v_name2 varchar2(32) := 'ABC';
v_num1 number := 13;
v_num2 number;
BEGIN
dbms_output.put_line(v_name1);
dbms_output.put_line(v_name1 || v_name2);
dbms_output.put_line(v_num1);
dbms_output.put_line(v_num1 + v_num2);
END;

--CONSTANT 定义常量值,定义后无法修改
DECLARE
v_number1 number := 13;
v_number2 CONSTANT number := 3.14;
BEGIN
DBMS_OUTPUT.put_line(v_number1 * v_number2);
END;

--变量与指定的列的类型一致 采用%TYPE
DECLARE
v_num1 employees.salary%type := 13.234;
v_num2 employees.manager_id%type := 2;
BEGIN
DBMS_OUTPUT.put_line(v_num1 / v_num2);
END;

--DML结果装载入PLSQL变量
DECLARE
v_salary employees.salary%type;
BEGIN
select salary into v_salary from employees where employee_id=198;
DBMS_OUTPUT.put_line('v_salary:'||v_salary);
END;

--%ROWTYPE表示数据类型是一行数据
DECLARE
v_emp employees%rowtype;
BEGIN
select * into v_emp from employees where employee_id = 100;
dbms_output.put_line('部门编号:'||v_emp.department_id ||
' 员工姓名:'|| v_emp.first_name);
END;

--通过用户输入的员工号,查询一行记录

DECLARE
v_empId employees.employee_id%type;
v_emp employees%rowtype;
BEGIN
select * into v_emp from employees where employee_id='&input_empId';
dbms_output.put_line(v_emp.first_name);
EXCEPTION
when no_data_found then
dbms_output.put_line('该员工未找到');
END;

--流程控制
IF <布尔表达式> THEN
  PL/SQL 和 SQL语句
ELSE
  其它语句
END IF;
--IF实例
DECLARE
v_temp number :='&input_temp';
BEGIN
if v_temp>38 then
dbms_output.put_line('隔离');
else
dbms_output.put_line('观察');
end if;
END;

--case 条件判断
DECLARE
--定义属性
v_score number :='&input_score';
--定义结果
v_result varchar2(32);
BEGIN
--case 条件判断
v_result :=
case
when v_score between 90 and 100 then '优秀'
when v_score between 80 and 89 then '良好'
when v_score between 70 and 79 then '一般'
when v_score between 60 and 69 then '及格'
when v_score <60 then '不及格'
else '数据异常'
end;
--打印结果
dbms_output.put_line(v_result);
END;

猜你喜欢

转载自www.cnblogs.com/ZXDZXD/p/12454655.html