zoukankan      html  css  js  c++  java
  • Oracle442个应用场景---------PL/SQL基础


    -----------------------------------------------------------------------------------
    备份和恢复数据库略过。在后面解说应用场景207---231,越过。

    。。。。
    数据库网络配置略过,其在实际的应用中不是非常普遍。所以。此处先不进行具体的解说。假设后期有时间会进行整理。
    应用场景32----244越过。

    。。。

    。。

    -----------------------------------------------------------------------------------

    -------------------PL/SQL语言基础------------------------


    基础知识点:

    PL/SQL字符集
    PL/SQL演示样例程序
    声明变量与常量


    ----------------------------------------------------------


    应用场景2245 :使用赋值语句

    SET ServerOutput ON;
    DECLARE
      BookName VARCHAR2(50);
    BEGIN
      BookName := ' Oracle 11g学习笔记';
      dbms_output.put_line(BookName);
    END;
    /


    应用场景246 :使用条件语句

    SET ServerOutput ON;
    DECLARE
      Num INTEGER := -11;
    BEGIN
      IF Num < 0 THEN
        dbms_output.put_line('负数');
      ELSIF Num >0 THEN
        dbms_output.put_line('正数');
      ELSE
        dbms_output.put_line('0');
      END IF;
    END;
    /

    应用场景247:分支语句CASE

    SET ServerOutput ON;
    DECLARE
      varDAY INTEGER := 3;
      Result VARCHAR2(20);
    BEGIN
      Result := CASE varDAY
        WHEN 1 THEN '星期一'
        WHEN 2 THEN '星期二'
        WHEN 3 THEN '星期三'
        WHEN 4 THEN '星期四'
        WHEN 5 THEN '星期五'
        WHEN 6 THEN '星期六'
        WHEN 7 THEN '星期七'
        ELSE '数据越界'
      END;
      dbms_output.put_line(Result);
    END;
    /


    应用场景248 :循环语句LOOP...EXIT...END

    SET ServerOutput ON;
    DECLARE
      v_Num INTEGER := 1;
      v_Sum INTEGER := 0;
    BEGIN
      LOOP
        v_Sum := v_Sum + v_Num;
        dbms_output.put_line(v_Num);
        IF v_Num = 4 THEN
          EXIT;
        END IF;
        dbms_output.put_line(' + ');
        v_Num := v_Num + 1;
      END LOOP;
      dbms_output.put_line(' = ');
      dbms_output.put_line(v_Sum);
    END;
    /


    应用场景249 :循环语句LOOP...EXIT WHEN ..END

    SET ServerOutput ON;
    DECLARE
      v_Num INTEGER := 1;
      v_Sum INTEGER := 0;
    BEGIN
      LOOP
        v_Sum := v_Sum + v_Num;
        dbms_output.put_line(v_Num);
        EXIT WHEN v_Num = 4;
        dbms_output.put_line(' + ');
        v_Num := v_Num + 1;
      END LOOP;
      dbms_output.put_line(' = ');
      dbms_output.put_line(v_Sum);
    END;
    /


    应用场景250 :循环语句WHILE ....LOOP...END LOOP

    SET ServerOutput ON;
    DECLARE
      v_Num INTEGER := 1;
      v_Sum INTEGER := 0;
    BEGIN
      WHILE v_Num <= 4
      LOOP
        v_Sum := v_Sum + v_Num;
        dbms_output.put_line(v_Num);
        IF v_Num < 4 THEN
          dbms_output.put_line(' + ');
        END IF;
        v_Num := v_Num + 1;
      END LOOP;
      dbms_output.put_line(' = ');
      dbms_output.put_line(v_Sum);
    END;
    /


    应用场景251 :循环语句FOR...IN...LOOP...END LOOP

    SET ServerOutput ON;
    DECLARE
      v_Num INTEGER;
      v_Sum INTEGER := 0;
    BEGIN
      FOR v_Num IN 1..4
      LOOP
        v_Sum := v_Sum + v_Num;
        dbms_output.put_line(v_Num);
        IF v_Num < 4 THEN
          dbms_output.put_line(' + ');
        END IF;
      END LOOP;
      dbms_output.put_line(' = ');
      dbms_output.put_line(v_Sum);
    END;
    /


    应用场景252 :异常处理

    SET SERVEROUTPUT ON;
    DECLARE
        x NUMBER;
    BEGIN
        x:= 'abc';--向NUMBER类型的变量X中赋值字符串,导致异常
    EXCEPTION
       WHEN VALUE_ERROR THEN
         DBMS_OUTPUT.PUT_LINE('数据类型错误');
    END;
    /


    SET SERVEROUTPUT ON;
    DECLARE
        var_DepName VARCHAR(40);
    BEGIN
        SELECT Dep_Name INTO var_DepName
        FROM HRMAN.Departments WHERE Dep_id > 1;
    EXCEPTION
       WHEN NO_DATA_FOUND THEN
         DBMS_OUTPUT.PUT_LINE('没有数据');
       WHEN TOO_MANY_ROWS THEN
         DBMS_OUTPUT.PUT_LINE('返回多行匹配的数据');
        WHEN OTHERS THEN
         DBMS_OUTPUT.PUT_LINE('错误情况不明');
    END;
    /


    应用场景253 :数值型函数

    1.ABS函数
    SET ServerOutput ON;
    BEGIN
      dbms_output.put_line(ABS(-4));
    END;
    /

    2.CEIL函数
    SET ServerOutput ON;
    BEGIN
      dbms_output.put_line(CEIL(116.34));
      dbms_output.put_line(CEIL(-112.74));
      dbms_output.put_line(CEIL(0));
    END;
    /

    3.FLOOR函数
    SET ServerOutput ON;
    BEGIN
      dbms_output.put_line(FLOOR(116.34));
      dbms_output.put_line(FLOOR(-112.74));
      dbms_output.put_line(FLOOR(0));
    END;
    /

    4.POWER函数
    SET ServerOutput ON;
    BEGIN
      dbms_output.put_line(POWER(15, 4));
    END;
    /

    5.ROUND函数
    SET ServerOutput ON;
    BEGIN
      dbms_output.put_line(ROUND(123.456, 2));
      dbms_output.put_line(ROUND(123.456, 1));
      dbms_output.put_line(ROUND(123.456, 0));
      dbms_output.put_line(ROUND(123.456, -1));
      dbms_output.put_line(ROUND(123.456, -2));
      dbms_output.put_line(ROUND(123.456, -3));
    END;
    /


    应用场景254 :字符型函数

    SET ServerOutput ON;
    BEGIN
      dbms_output.put_line(ASCII('ABC'));
    END;
    /


    COL DEP_NAME FORMAT A20
    SELECT Dep_name, LENGTH(Dep_name) FROM HRMAN.Departments;

    SET ServerOutput ON;
    BEGIN
      dbms_output.put_line(UPPER('abc'));
    END;
    /


    应用场景255 :日期型函数

    sysdate函数:
    SET ServerOutput ON;
    BEGIN
      dbms_output.put_line(SYSDATE);
    END;
    /

    TO_CHAR函数
    SET ServerOutput ON;
    BEGIN
      dbms_output.put_line(TO_CHAR(SYSDATE));
    END;
    /

    last_day函数
    SET ServerOutput ON;
    BEGIN
      dbms_output.put_line(LAST_DAY(SYSDATE));
    END;
    /

    TO_DATE函数
    SET ServerOutput ON;
    BEGIN
      dbms_output.put_line(TO_DATE('2010-2-5', 'yyyy-mm-dd'));
    END;
    /

    months_between函数:
    SET ServerOutput ON;
    DECLARE
      date1 VARCHAR2(20) := '2010-06-05';
      date2 VARCHAR2(20) := '2010-10-05';
    BEGIN
      dbms_output.put_line(MONTHS_BETWEEN(TO_DATE(date2,'yyyy-mm-dd'), TO_DATE(date1, 'yyyy-mm-

    dd')));
    END;
    /

    round函数:
    SET ServerOutput ON;
    BEGIN
      dbms_output.put_line(TO_CHAR(ROUND (SYSDATE, 'MM')));
    END;


    应用场景256 :统计函数

    count函数
    SELECT COUNT(Dep_id) FROM HRMAN.Departments;

    MAX函数
    SELECT MAX(Dep_id) FROM HRMAN.Departments;

    MIN函数
    SELECT MIN(Dep_id) FROM HRMAN.Departments;


     

  • 相关阅读:
    【模板】O(nlongn)求LIS
    【图论】用线段树写Dijikstra!!
    【图论】最短路总结
    【codeforces841A】Generous Kefa
    【模板】Tarjian求LCA
    【模板】 RMQ求区间最值
    【模板】map入门
    【二分 贪心】覆盖问题 BZOJ1052 HAOI2007
    【dp】10-15题解 snake vs block
    【模拟】10-15 题解 trans
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/6844433.html
Copyright © 2011-2022 走看看