zoukankan      html  css  js  c++  java
  • PLSQL编程

    1.1概念和目的

    什么是PL/SQL?

    PLSQL是Oracle对sql语言的过程化扩展

    指在SQL命令语言中增加了过程处理语句(如分支,循环等),使SQL语言具有过程处理能力

    1.2程序结构

    通过Plsql Developer工具的Test Window 创建程序模板或者通过语句在SQL Window编写

    提示:PLSQL语言的大小写是不区分的

    PL/SQL可以分为三个部分:声明部分,可执行部分,异常处理部分

    在cmd命令行中使用sqlplus得

    ---打开输出开关(默认关闭)
    set serveroutput on
    -- Created on 2018/10/15 by TANLEI 
    declare
      -- 声明变量的地方,还包括游标
      --相当于public class A{}
    begin
      -- 执行部分
      --public static  void main(String args[]){
      --}
    
      --异常处理
      
      --System.out.println("hello world")
      DBMS_OUTPUT.put_line('hello world');
    end;

    其中declare部分用来声明变量或游标(结果集类型变量),如果程序中无变量声明可以省掉

    DBMS_OUTPUT为oracle内置程序包,相当于java中的System.out,而put_line()是调用的方法,相当于println()方法

    1.3变量

    变量分类

    1. 普通数据类型(char,varchar2,number,boolean,long)
    2. 特殊变量类型(引用型变量,记录型变量)

    声明变量的方式为:

    变量名  变量类型(变量长度)  v_nume varchar(20);
    

     1.3.1普通变量

    • 直接赋值
    • 语句赋值 
    -- 声明一个人的信息,姓名,薪水,地址
    declare
      -- 姓名
      v_name VARCHAR2(50) := '张三';
      --薪水
      v_sal NUMBER;
      --地址
      v_addr VARCHAR2(200);
    begin
      -- 直接赋值
      v_sal := 15800;
      --语句赋值
      select '上海传智播客' INTO v_addr FROM dual;
    
      --打印变量
      DBMS_OUTPUT.put_line('姓名:' || v_name || ',薪水:' || v_sal || ',地址:' ||
                           v_addr);
    end;

    1.3.2引用型变量 

    变量的类型和长度取决于表中字段的类型和长度

    emp%type  (引用型变量:表%type 代表类型)

    通过表名.列名%TYPE指定变量的类型和长度,例如 v_name emp.name%TYPE;

    举例:my_name emp.ename%type;
        引用emp表中ename列的类型作为变量my_name的类型,并且变量的类型始终与其保持一致

    示例:查询emp表中某号员工的个人信息,打印姓名和薪水
    -- 查询emp表中某号员工的个人信息,打印姓名和薪水 
    declare 
      -- 姓名
      V_NAME emp.ename%Type;
      -- 薪水
      V_SAL emp.sal%TYPE;
       
    begin
      -- 查询姓名和薪水并赋值给变量
      select ename,sal INTO V_NAME,V_SAL from emp  where empno=7839;
      
      --打印变量
      DBMS_OUTPUT.put_line('姓名:'||V_NAME||',薪水:'||V_SAL);
      
    end;
    

     好处:灵活

    1.3.3记录型变量

    接收表中的一整行记录,相当于java的一个对象

    语法:  变量名称  表名%ROWTYPE 例如:v_emp emp%rowtype

    示例

    查询并打印某号的员工的姓名和薪水

    -- 查询emp表中某号员工的个人信息,打印姓名和薪水 
    declare 
      -- 记录型变量
      v_emp emp%ROWTYPE;
      
       
    begin
      -- 查询并赋值给变量
      select * INTO v_emp from emp  where empno=7839;
      
      --打印变量
      DBMS_OUTPUT.put_line('姓名:'||v_emp.ename||',薪水:'||v_emp.sal);
      
    end;
    

    1.4流程控制

     1.4.1条件分支

     语法

    注意关键字ELSIF

    begin
      if 条件1 then 执行1
      elsif 条件2  then 执行2
      else 执行3
      end if;
      
    end;
    

     示例:判断emp表中记录是否超过20条,10-20之间,或者10条以下

     

    -- 判断emp表中记录是否超过20条,10-20之间,或者10条以下
    declare 
      -- 声明变量接收emp表中的记录数
      v_count number;
      
       
    begin
     
       --查询并赋值给变量
      select count(1) INTO v_count from emp;
      
      if v_count>20 then
         DBMS_OUTPUT.put_line('emp表中的记录数在20以上为:'||v_count);
      elsif v_count>=10  then 
         DBMS_OUTPUT.put_line('emp表中的记录数在10-20之间为:'||v_count);
      else 
         DBMS_OUTPUT.put_line('emp表中的记录数在10以下为:'||v_count);
      end if;
      
    end;  

    1.4.2循环

    loop循环

    语法

    begin
     
      loop
         exit when 退出循环条件
      end loop  
     
    end;
    

     示例:打印数字1-10

     

    -- 打印数字1-10
    declare 
      -- 声明一个循环变量
      v_num number:=1;
      
       
    begin
     
       loop
         EXIT WHEN v_num>10;
         DBMS_OUTPUT.put_line(v_num);
         
         --循环变量的自增长
         --java
         --v_num++
         v_num:=v_num+1;
       end loop;
      
    end;
    

      

  • 相关阅读:
    Dingo/api 学习笔记
    Composer install 报错
    bootstrap4 调整元素之间距离
    css font-family常用的黑体宋体等字体中英文对照
    mac 开关机
    lodash.memoize
    Evevt Loop 事件循环
    mac 安装 XX-Net-3.12.11
    mac端口占用
    npm 安装/删除/发布/更新/撤销 发布包
  • 原文地址:https://www.cnblogs.com/tanlei-sxs/p/9795447.html
Copyright © 2011-2022 走看看