• plsql 基础教程(一)


    L/SQL

    一、PLSQL 变量

    set serveroutput on;

    declare v_num number :=0;--变量名一般以v开头

    begin

        v_num:=2/v_num; --这句因为除数为0会报错。

        dbms_output.put_line(v_num);  

    end;

    /

    异常处理:

    set serveroutput on;

    declare v_num number :=0;

    begin

        v_num:=2/v_num;

        dbms_output.put_line(v_num);

        exception

        when others then

        dbms_output.put_line('错误');

    end;

    /

     变量类型

     binary_integer: 整数,主要用来计数而不是用来表示字段类型

     number 数字类型

     char 定长字符串

     varchar2 变长字符串

     date 日期

     long 长字符串,最长2G

     boolean 布尔类型,可以取值为true,false ,和null。

    声明变量:

     set serveroutput on;

    declare v_num number :=0;

      v_bl boolean :=false;

    begin

        dbms_output.put_line('s');

    end;

    /

    注意:declare 放在变量声明的最前面,无论声明多少个变量仅可放一个declare

         boolean 类型的变量是不能通过dbms_output.put_line()打印出来的。

    得到表中字段类型

    %type

    set serveroutput on;

    declare v_num number :=0;

      v_blnum v_num%type := v_num;

    begin

        dbms_output.put_line(v_blnum);

    end;

    /

    Record 类型:

    set serveroutput on;

    declare type type_record is record

    (

        name1 varchar(20),

        age number

    );

    v_type_record type_record;

     

    begin

        v_type_record.name1:='nihaoname';

        v_type_record.age:=23;

        dbms_output.put_line(v_type_record.name1||' '||v_type_record.age);

    end;

    /

    使用%rowtype声明record 变量(将对应表的所有类型作为该变量的成员)

    set serveroutput on;

    declare

     v_school school%rowtype;

    begin

        v_school.name1:='nama';

        v_school.age:='age';

        dbms_output.put_line(v_school.name1||v_school.age);

    end;

    二、PL/SQL中的sql

    1.       Insert 语句

    Insert 语句必须要有返回值且只有一条返回。

    Insert 语句中必须有into 将查到的数据放入到对应的变量中。注意into两边的值的个数要相同。

    Into 后可以传入一个record类型的变量,用于将查询出来的值放入到该变量中。

    set serveroutput on;

    declare

    v_school  school%rowtype;

    begin

        select name1 ,age into v_school from school;

        dbms_output.put_line(v_school.name1);

    end;

    /

    2.       Update 语句

    sql%rowcount 得到刚刚执行sql影响的行数。

    set serveroutput on;

    declare

    v_school  school%rowtype;

    begin

         update school set name1='tes2t' where name1='s' ;

        dbms_output.put_line(sql%rowcount||'ss');

        commit;

    end;

    /

    3.       执行DDL 语句

    在pl/sql 中执行sql语句方法

    三、判断语句

    set serveroutput on;

    declare

    v_num number(20) :=1399;

    begin

        if (v_num <1200) then

        dbms_output.put_line('low');

        elsif(v_num<1800) then

        dbms_output.put_line('middle');

        else

        dbms_output.put_line('high');

        end if;

    end;

    /

    四、循环

    set serveroutput on;

    declare

    i number(20) :=1;

    begin

        loop

        dbms_output.put_line('nihao'||i);

        i:=i+1;

        exit when (i>=5);

        end loop;

    end;

    /

    set serveroutput on;

    declare

    i number(20) :=1;

    begin

        while (i<=5) loop

        dbms_output.put_line('nihao'||i);

        i:=i+1;

        end loop;

    end;

    /

    正序for循环

    set serveroutput on;

    declare

    i number(20) :=1;

    begin

       for a in 1..9 loop

        dbms_output.put_line(a);

        end loop;

    end;

    /

    反序for循环

    begin

       for a in reverse 1..9 loop

        dbms_output.put_line(a);

        end loop;

    end;

    /

    注意:无论是正序还是反序for循环 循环的数字必须是从小到大排列如1..9

    五、 错误处理

    set serveroutput on;

    declare

    i number(20) :=1;

    v_name varchar(20) :='';

    begin

        select name1 into v_name from school where name1='ss';

        exception

        when no_data_found then

        dbms_output.put_line('没有数据');

        when others then

        begin

            dbms_output.put_line('未知错误');

        end;

    end;

    /

    SQLCODE SQLERRM 关键字代表出错代码和出错信息。

    set serveroutput on;

    declare

    i number(20) :=1;

    v_name varchar(20) :='';

    begin

        select name1 into v_name from school where name1='ss';

        exception

        when no_data_found then

        dbms_output.put_line('没有数据'||SQLERRM || SQLCODE);

        when others then

        begin

            dbms_output.put_line('未知错误');

        end;

    end;

    /

     
     
  • 相关阅读:
    SpringMVC基础知识
    git pull 和git fetch的区别
    动态规划的原理?
    为什么要使用volatile修饰呢?
    内部类,匿名内部类?
    什么是性能优化?
    如何定位CPU瓶颈?
    什么是程序的耦合?
    什么是性能优化?
    Class类的常用方法?
  • 原文地址:https://www.cnblogs.com/sangmu/p/6819193.html
Copyright © 2020-2023  润新知