zoukankan      html  css  js  c++  java
  • PLSQL 语句学习

    学习PLSQL语句的目的;

    让原本在应用程序的判断结果的代码,写成sql语句,从而提高应用程序的速度;

    在于存储过程 和存储函数 还有触发器之前肯定要学习PLSQL;

    提高操作oracle的速度和为之后做准备;

    基本语法:

    declare

      说明部分(变量说明、光标申明、例外说明)

    begin

      语句序列(DML 语句)

    exception

      例外处理语句

    end;

    /

    打开输出开关;

    set serveroutput on

    /

    什么是PL/SQL程序;

    PL/SQL (Procedure Language/SQL);

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

    指在sql命令语言中增加了过程处理语句(如分支、循环等),使得SQL 语言具有过程处理能力。PLSQL 是面向过程的语言;

    定义基本变量;

    类型:char ,varchar2,date,number,boolean,long

    特殊变量类型:

    引用型变量:

    my_name emp.name%type;

    PLSQL语句支持SQL语句,PLSQL语句有两种赋值方式,一种是:= 另外一种是into  关键字;

    select ename,sal into pername,psal from emp where empno=7839;

     SYS.DBMS_OUTPUT.PUT_LINE(pername||'dddddddpsal'||psal );

    记录型类型:是行类型;取一行的类型作为我这个变量的类型;

    举例说明:

    emp_rec emp%rowtype;

    记录型变量分量的引用;

    emp_rec.ename :='ADMS';

    if语句的使用;语法如下;

    第一种写法:

    IF 条件 THEN 语句1

    语句2

    end if;

    第二种写法;

    IF 条件 then 语句序列1

    else 语句序列2

    end if;

    第三种写法:

    IF 条件 THEN 语句

    elseif 语句 then 语句;

    else 语句

    end if

    循环语句:

    while total <= 2333 LOOP

    ...

    total:=total + salary;

    END LOOP;

    第二种循环语句:

    Loop

    EXIT [when 条件];

    End loop

    第三种:

    FOR IN 1...4 LOOP

    语句序列;

    END LOOP;

    光标:

    在PL/SQL语句中 ,光标代表一个集合;也叫游标;

    光标的语法:

    CURSOR 光标名[参数名 数据类型[参数名 参数类型]  IS SELECT 语句;

    从光标中取值;

    open c1;(打开光标执行查询);

    close c1(关闭光标)

    fetch c1 into pename; (取一条记录);fetch 的作用:把当前指针指向的记录返回;将指针指向下一条记录;

    光标的属性和光标数目限制;

    属性:%found  %notfound  %isopen %rowcount(不是总行数,而是取走的行数));

    修改光标数的限制: alter system set open_cursor = 400 scope=both;

    scope 的取值:both memory spfile(数据库需要重启);

    带参数的光标:

    cursor cemp(dno number) is select ename from emp where deptno = dno;

    打开光标的时候要把参数传递进去;

    例外:

    系统例外:No_date_found(没有找到数据);

    Too_many_rows select...into 语句匹配多个行);

    Timeout_on_resource (在等待资源时超时)

    Value_error (算术或转换错误);

    Zero_Divide (被零除);

    自定义例外;

    定义变量,类型是exception

    使用raise 抛出自定义例外;

  • 相关阅读:
    小程序之滚动选择器(时间、普通、日期)
    bzoj 4825: [Hnoi2017]单旋 LCT
    bzoj 4821: [Sdoi2017]相关分析 线段树
    bzoj 4766: 文艺计算姬 矩阵树定理
    bzoj 4031: 小Z的房间 矩阵树定理
    bzoj 4822~4824 CQOI2017题解
    bzoj 4817: [Sdoi2017]树点涂色 LCT+树链剖分+线段树
    bzoj 4816: [Sdoi2017]数字表格
    bzoj 4537: [Hnoi2016]最小公倍数 分块+并查集
    bzoj 4653: [Noi2016]区间
  • 原文地址:https://www.cnblogs.com/zht0915/p/4763962.html
Copyright © 2011-2022 走看看