zoukankan      html  css  js  c++  java
  • 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 条件判断

    CASE 条件表达式
    WHEN 条件表达式结果1 THEN
         语句段1
    WHEN 条件表达式结果2 THEN
         语句段2
      ......
    WHEN 条件表达式结果n THEN
         语句段n
    [ELSE 条件表达式结果]
    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 90 then '良好'
    when v_score between 70 and 80 then '一般'
    when v_score between 60 and 70 then '及格'
    when v_score between 0 and 60 then '不及格'
    else '数据异常'
    end;
    --打印结果
    dbms_output.put_line(v_result);
    END;

    --数组的输出采用for循环方式,打印出来
    DECLARE
    -- 定义一个数组类型
    type type_arr is array(5) of varchar2(32);
    -- 制定一个变量为数组的类型
    v_type_arr type_arr;
    BEGIN
    --变量赋值
    v_type_arr :=type_arr('1','22','333','4444','55555');
    --使用for循环数组
    for i in 1 .. v_type_arr.count loop
    dbms_output.put_line(v_type_arr(i));
    end loop;
    END;

  • 相关阅读:
    读入输出优化
    【JSOI2008】星球大战 并查集
    堆STL和重载运算符
    树的直径
    H3C三层交换机(S5500)清除配置信息并进行简单配置
    简单的逻辑学
    Java基础--第十八天
    Java基础--第十七天
    Java基础--第十六天
    Java基础--第十五天
  • 原文地址:https://www.cnblogs.com/ZXDZXD/p/12454655.html
Copyright © 2011-2022 走看看