PLSQL

    xiaoxiao2022-07-14  165

    PL/SQL

    pl/sql的基本概念定义变量为变量赋值给变量设置默认值根据雇员的编号查询出雇员的名字 pl/sql中的程序控制定义常量使用%TYPE定义变量的类型使用%ROWTYPE声明变量IF使用if else多if结构

    pl/sql的基本概念

    PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询组织在PL/SQL代码的过程中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL只有Oracle数据库有。

    DEMO:第一个pl/sql程序

    BEGIN --表示开始过程 NULL; --过程代码 END;--过程结束 /

    DEMO:输出hello world

    --开启打印功能 SET SERVEROUTPUT ON; BEGIN --表示开始过程 DEMS_OUTPUT.put_line('Hello world'); --过程代码 END; --过程结束 /

    定义变量

    DECLARE v_num NUMBER; --声明一个全局变量 BEGIN --表示开始过程 DBMS_OUTPUT.put_line('变量的值是:'|| v_num); --过程代码 END; --过程结束 /

    字符串的连接使用的不是 “+” 而是 "||"全局变量的声明放在DECLARE关键字之后如果声明了变量但是没有赋值则默认就是空

    为变量赋值

    DECLARE v_num NUMBER; --定义了变量 BEGIN --表示开始过程 v_num=30; --为变量赋值 DBMS_OUTPUT.put_line('变量的值是:' || v_num ); --过程代码 END; /

    给变量设置默认值

    DECLARE v_num NUMBER:=100; BEGIN DBMS_OUTPUT.put_line('变量的值是:' || v_num ); END; /

    可以在DECLARE后面声明变的时候给出默认值,如果在BEGIN之后没有为变量赋新的值则按照默认的值输出。

    根据雇员的编号查询出雇员的名字

    DECLARE v_empo NUMBER; --保存雇员编号 v_ename VARCHAR2(100); --保存编号 BEGIN --表示开始过程 DBMS_OUTPUT.put_line(‘请输入编号!’); v_empno:=&empno; --开始查询 SELECT ename INTO v_ename FROM emp WHERE empno=v_empno; DBMS_OUTPUT.put_line('编号是:' || v_empno ||', 名字是: ' || v_ename); --过程代码 END; --过程结束 /

    pl/sql中的程序控制

    定义常量

    DECLARE v_empno CONSTANT NUMBER; BEGIN DBMS_OUTPUT.put_line('编号是:' || v_empno); END;

    /

    DECLARE v_empno CONSTANT NUMBER:='7788';--常量必须有初始值 BEGIN DBMS_OUTPUT.put_line('编号是:' || v_empno); END; /

    使用%TYPE定义变量的类型

    DECLARE v_empno emp.empno%type; --表示变量的类型就是emp数据中的empno字段的类型(number) v_ename emp.ename%TYPE; -- 表示变量的类型就是emp数据表中的ename 字段的类型(VARCHAR2) BEGIN DBMS_OUTPUT.put_line('请输入编号!'); v_empno:=&empno;; SELECT ename INTO v_ename FROM emp WHERE empno=v_empno; DBMS_OUTPUT.put_line('编号是:' || v_empno ||', 名字是: ' || v_ename); END; /

    “表名.字段名%TYPE”: 让变量的类型为指定的表的字段的类型

    使用%ROWTYPE声明变量

    DECLARE v_empno emp.empno%type; --表示变量的类型就是emp数据中的empno字段的类型(number) v_result emp%ROWTYPE; -- 表示该变量可以接受查询到的所有字段的数据 BEGIN DBMS_OUTPUT.put_line('请输入编号!'); v_empno:=&empno;; SELECT * INTO v_result FROM emp WHERE empno=v_empno; DBMS_OUTPUT.put_line('编号是:' || v_empno ||', 名字是: ' || v_ename); END; /

    IF使用

    DECLARE v_count NUMBER; BEGIN SELECT COUNT(*) INTO v_count FROM emp; IF v_count>10 THEN DBMS_OUTPUT.put_line(‘数据量大于10’); END IF; --表示if结束 END; --过程结束 /

    if else

    DECLARE v_count NUMBER; BEGIN SELECT COUNT(*) INTO v_count FROM emp; IF v_count>10 THEN DBMS_OUTPUT.put_line(‘数据量大于10’); ELSE DBMS_OUTPUTput_line('数值量小于或者等于10'); END IF; --表示if结束 END; --过程结束 /

    多if结构

    DECLARE v_count NUMBER; BEGIN SELECT COUNT(*) INTO v_count FROM emp WHERE job='SALESMAN'; IF v_count>10 THEN DBMS_OUTPUT.put_line(‘数据量大于10’); ELSIF v_count<10 THEN DBMS_OUTPUT.put_line('数据量小于10'); ELSE DBMS_OUTPUT.put_line('数据量等于10'); END IF; --表示if结束 END; --过程结束 /

    最新回复(0)