zoukankan      html  css  js  c++  java
  • PL/SQL编程基础(一):PL/SQL语法简介(匿名PL/SQL块)

    PL/SQL

     

    • PL/SQLOracle在关系数据库结构化查询语言SQL基础上扩展得到的一种过程化查询语言。
    • SQL与编程语言之间的不同在于,SQL没有变量,SQL没有流程控制(分支,循环)。而PL/SQL是结构化的和过程化的结合体,而且最为重要的是,在用户执行多条SQL语句时,每条SQL语句都是逐一的发送给数据库,而PL/SQL可以一次性将多条SQL语句一起发送给数据库,减少网络流量

    SQL执行           

    PL/SQL执行

     

    • 匿名Pl/SQL块
      • – 动态构造,只能执行一次
      • 一次性完成,没有名字
    • 存储过程,函数,触发器
      • 给它一个名字,保存到数据库,可以反复使用,调用.
      • – 存储在数据库中编译过的代码,可以反复执行。

     

    PL/SQL语法结构

    语法:

    DECLARE

    -- 声明部分,例如:定义变量、常量、游标。

    BEGIN

    -- 程序编写、SQL语句

    EXECTPION

    -- 处理异常

    END ;

    /

     

    说明:

    声明部分(DECLARE

    包含变量定义、用户定义的PL/SQL类型、游标、引用的函数或过程;

    执行部分(BEGIN

    包含变量赋值、对象初始化、条件结构、迭代结构、嵌套的PL/SQL匿名块,或是对局部或存储PL/SQL命名块的调用;

    异常部分(EXCEPTION

    包含错误处理语句,该语句可以像执行部分一样使用所有项;

    结束部分(END

    程序执行到END表示结束,分号用于结束匿名块,而正斜杠(/)执行块程序;

    默认情况下系统输出显示被关闭的,需要设定 SET SERVEROUTPUT ON

    匿名Pl/SQL块

    – 动态构造,只能执行一次

    一次性完成,没有名字

    范例

    编写不做任何工作的PL/SQL块

    BEGIN

    NULL ;

    END ;

    /

    最简单的循环PL/SQL匿名块,null表示什么也没干

    BEGIN

    for i in 1..10 loop

    null;

    end loop;    

    END;

       /

    编写HELLO WORD

    SQL> BEGIN

     2 DBMS_OUTPUT.put_line('HELLO,WENDY');

     3 END;

     4 /

    HELLO,WENDY

     

    PL/SQL procedure successfully completed.

    匿名PL/SQL块,循环显示2HELLOW,WENDY

    BEGIN

    For I in 1..2 loop

    DBMS_OUTPUT.put_line('HELLO,WENDY');

    End loop;

     END;

       /

    匿名PL/SQL块,循环插入数据

    SQL> insert into t select rownum,'x' from dba_objects where rownum<101;

    能用SQL解决的就不要用PL/SQL

    PL/SQL会消耗资源,效率很低

    BEGIN

     for i in 1..100 loop

    insert into t values(i,'w');

    end loop;

     END;

     /

    编写一个简单的PL/SQL程序

    := 为变量赋值

    DECLARE

    v_num NUMBER ;    -- 定义一个变量v_num

    BEGIN

    v_num := 30 ;         -- 设置v_num的内容

    DBMS_OUTPUT.put_line('V_NUM变量的内容是:' || v_num) ;

    END ;

    /

    编写PL/SQL块,输入一个雇员编号,而后取得指定的雇员姓名

    DECLARE

    v_eno    NUMBER ;

    v_ename    VARCHAR2(10) ;

    BEGIN

    v_eno := &empno ;        -- 由键盘输入雇员编号

    SELECT ename INTO v_ename FROM emp WHERE empno=v_eno ;

    DBMS_OUTPUT.put_line('编号为:' || v_eno || '雇员的名字为:'|| v_ename) ;

    END ;

    /

     

     

  • 相关阅读:
    iptables
    linux时间同步
    iftop使用
    linux目录结构及定时任务
    awk基本用法
    二、Java面向对象(6)_深入变量
    二、Java面向对象(5)_static修饰符
    二、Java面向对象(4)_构造函数
    二、Java面向对象(3)_类和对象
    二、Java面向对象(2)_软件开发方式
  • 原文地址:https://www.cnblogs.com/thescentedpath/p/introducePLSQL.html
Copyright © 2011-2022 走看看