• pl/sql(二)


    --pl/sql 2
    
    
    DECLARE
    -- 最基本的pl/sql 代码块
    -- student;
    s student%ROWTYPE;
    BEGIN  
    select *
    into    s --返回的是一个单独的实例
    from student
    where sno='s001';
    --开始
    --在一个表里面有一个输出函数v
    DBMS_OUTPUT.PUT_LINE('学生姓名:'||s.sname);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生性别:'||s.ssex);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生年龄:'||s.sage);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生学号:'||s.sage);  --换行打印
    END;   
    /
    
    
    
    /*
    对数据的操作有哪些
    +-* / %  **
    
    */
    
    
    DECLARE
    a number(10,0);
    b number(10,0);
    c number(10,0);
    BEGIN  
    a := 10;
    b := 20;
    DBMS_OUTPUT.PUT_LINE('a:'||a);  
    DBMS_OUTPUT.PUT_LINE('b:'||b);  
    DBMS_OUTPUT.PUT_LINE('a+b:'||(a+b));  
    DBMS_OUTPUT.PUT_LINE('a-b:'||(a-b));  
    DBMS_OUTPUT.PUT_LINE('a*b:'||(a*b));  
    DBMS_OUTPUT.PUT_LINE('b/a:'||(b/a));
    DBMS_OUTPUT.PUT_LINE('2^10:'||2**10);      
    END;   
    /
    
    /*
    注意 : 
    赋值的时候不能使用=   需要使用 :=
    计算是不能再函数内做从
    c := a+b;
    DBMS_OUTPUT.PUT_LINE('a+b:'||c);  
    
    c  必须是一个明确的值
    为什么?
    应为pl/sql 
    语言是一个脚本语言 通过解释器解释
    并没有通过编译
    */
    
    DECLARE
    a number(10,0);
    b number(10,0);
    c number(10,0);
    BEGIN  
    a := 10;
    b := 20;
    DBMS_OUTPUT.PUT_LINE('a:'||a);  
    DBMS_OUTPUT.PUT_LINE('b:'||b);  
    DBMS_OUTPUT.PUT_LINE('a+b:'||a+b);
    END;
    /  
    
    
    /*
    1
    2
    4
    8
    16
    32
    64
    128
    256
    512
    1024
    */
    
    /*
    15点见
    
    判断  
    
    循环
    */
    
    
    /*
    复习 
    判断语句
    
    if  条件
        执行的内容
    else
        执行的内容
    
    */
    
    IF 判断条件 THEN
        执行内容;
    ELSE
        执行内容;
    END IF
    
    
    /*
    成绩判断
    >60 及格
    否则 不及格
    */
    
    
    DECLARE
    a number(10,0);
    BEGIN  
    a := 61;
    IF a>60 THEN
        DBMS_OUTPUT.PUT_LINE('学生成绩及格:'|| a);
    ELSE
        DBMS_OUTPUT.PUT_LINE('学生成绩不及格:'|| a);
    END IF;
    
    END;
    /  
    
    
    /*
    张三的J2SE成绩情况
    
    
    */
    DECLARE
    a number(10,0);
    BEGIN  
    select score
    into a
    from sc 
    where 
        sno= (select sno from student where sname='张三')   
        and 
        cno=(select cno from course  where cname='J2SE');
    
    IF a>60 THEN
        DBMS_OUTPUT.PUT_LINE('学生成绩及格:'|| a);
    ELSE
        DBMS_OUTPUT.PUT_LINE('学生成绩不及格:'|| a);
    END IF;
    
    END;
    /  
    
    
    /*
    if 的用法
    
    常见的
    
    单if 结构
    if
    
    
    if else结构
    
    
    嵌套
    if 
        if
        else
    else
        if else
    
    if
    if
    if
    if
    else
    
    */
    
    -- 单if
    IF 条件 THEN
        ;
    END IF;
    
    --if else
    
    IF 条件 THEN
        ;
    ELSE
        ;
    END IF;
    
    
    --嵌套
    
    IF 条件 THEN
        IF 条件 THEN
            ;
        ELSE
            ;
        END IF;
    ELSE
        IF 条件 THEN
            ;
        ELSE
            ;
        END IF;
    END IF;
    
    --多if
    IF 条件 THEN
        ;
    IF 条件 THEN
        ;
    IF 条件 THEN
        ;
    IF 条件 THEN
        ;
    IF 条件 THEN
        ;
    ELSE
    END IF;
    
    
    --分支语句
       
    CASE  
    WHEN  判断 THEN
            ;
    WHEN  判断 THEN
            ;
    WHEN  判断 THEN
            ;
    ELSE
        ;
    END CASE;
    
    DECLARE
    a number(10,0);
    BEGIN  
    a:=78;
    CASE 
    WHEN a>=90 THEN
         DBMS_OUTPUT.PUT_LINE('成绩优秀:'||a);
    WHEN a>=80 THEN
         DBMS_OUTPUT.PUT_LINE('成绩还行:'||a);
    WHEN a>=70 THEN
         DBMS_OUTPUT.PUT_LINE('成绩良好:'||a);
    WHEN a>=60 THEN
         DBMS_OUTPUT.PUT_LINE('成绩及格:'||a);
    ELSE
        DBMS_OUTPUT.PUT_LINE('成绩不及格:'||a);
    END CASE;
    
    END;
    /  
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    DECLARE
    a number(10,0);
    BEGIN  
    select score
    into a
    from sc 
    where 
        sno= (select sno from student where sname='张三')   
        and 
        cno=(select cno from course  where cname='J2SE');
    CASE 
    WHEN a>=90 THEN
         DBMS_OUTPUT.PUT_LINE('成绩优秀:'||a);
    WHEN a>=80 THEN
         DBMS_OUTPUT.PUT_LINE('成绩还行:'||a);
    WHEN a>=70 THEN
         DBMS_OUTPUT.PUT_LINE('成绩良好:'||a);
    WHEN a>=60 THEN
         DBMS_OUTPUT.PUT_LINE('成绩及格:'||a);
    ELSE
        DBMS_OUTPUT.PUT_LINE('成绩不及格:'||a);
    END CASE;
    
    END;
    /  
    
    
    /*
    循环语句
    loop
    
    while loop
    
    for  loop
    
    cursor for loop
    */
    
    DECLARE
    a number(10,0);
    BEGIN  
    a:=0;
    <<loop_name>>
    loop
        if a<5 THEN
        a:=a+1;
        DBMS_OUTPUT.PUT_LINE('a的值是' ||a);
        else
        exit loop_name;
           end if;
    END loop;
    END;
    /
    
    
    <<loop_name2>>
    loop 
        ;
        exit loop_name2
    end loop
    -- 死循环
    exit  --强制结束循环的
    
    
    
    
    -- while  loop循环
    
    SET SERVEROUTPUT ON
    DECLARE
    a number(10,0);
    BEGIN  
    a:=0;
    
    <<while_loop_name>>
    while a<10 loop
    DBMS_OUTPUT.PUT_LINE('当前a='||a);
    a:=a+1;
    end loop while_loop_name;
    END;
    /
    
    
    SET SERVEROUTPUT ON
    DECLARE
    a number(10,0);
    b number(10,0);
    BEGIN  
    a:=0;
    <<while_loop_name1>>
    while a<5 loop
        DBMS_OUTPUT.PUT_LINE('当前a='||a);
        a:=a+1;
        b:=0;
            <<while_loop_name2>>
            while b<5 loop
                DBMS_OUTPUT.PUT_LINE('当前b='||b);
                b:=b+1;
                -- exit while_loop_name1;
            end loop while_loop_name1;
    end loop while_loop_name1;
    END;
    /
    
    
    
    
    
    
    
    
    
    
    
    DECLARE
    a number(10,0);
    BEGIN  
    a:=0;
    <<for_loop_name>>
    for i IN 1..20 loop
    DBMS_OUTPUT.PUT_LINE('当前i=:'||i);
    
    end loop for_loop_name;
    
    DBMS_OUTPUT.PUT_LINE('执行完毕');
    DBMS_OUTPUT.PUT_LINE('当前a=:'||a);
    END;
    /
    
    
    -- 大学期间  敲代码  40w行
    每个人都是在努力的路上,别因为别人的误解而放弃,,术业有专攻,如是而已。
  • 相关阅读:
    第三周进度条
    团队作业个人博客05
    团队作业个人博客04
    用户分析,场景分析
    团队作业个人博客03
    团队作业个人博客02
    团队作业个人博客01
    第四周进度条
    第三周进度条
    四则运算2
  • 原文地址:https://www.cnblogs.com/16699qq/p/13153508.html
Copyright © 2020-2023  润新知