• ORACLE数据库笔记之PL/SQL


    PL/SQL

    PL/SQL是一种块结构的语言,它是将一组语句放在一个块中,一次性发送给服务器。它是结合Oracle过程语言和结构化查询语言的一种扩展语言

    PL/SQL代码块的构成

    declare --标记声明部分用来声明一些变量,位于begin之前

    begin  --主程序体开始的标志

    主程序体块;

    [exception

     when 异常名 then 异常处理的方法;

    when 异常名  then 异常处理的方法;

    ...

    when other then 异常处理的方法;]

    end;  --主程序题结束的标志

    PL/SQL的常量和变量

    变量的定义:

       declare --用来声明变量

        变量名  变量类型;                      --直接定义不赋初值

        变量名  变量类型:=变量值;         --定义变量并且赋初值

        变量名   匹配的数据库中原有的值;    --直接使用数据库中原有的值来匹配

        例(name person.name%type)

        (其中%type可以引用表中某列的类型作为变量的数据类型,也可以引用变量的类型作为新变量的数据类型

          %typeye也可以被换成是%ROWTYPE即引用数据库表中的一行作为变量的数据类型,也就是record类型,此变量就相当于是java中的一个对象,可以用‘.’来访问记录中的属性)

     常量的定义:

         常量名 constant   数据类型:=值;  --注意constant是必须的

    (宿主常量:定义和普通的常量定义一样,使用时为:变量名 代码如下:)

    var emp_name varchar(30); 
    BEGIN
     SELECT ename INTO :emp_name FROM emp WHERE empno=7499; ②
     END;

    PL/SQL中运算符

     

    类型                     符号                              说明

    赋值运算符             :=                              PL/SQL中的赋值

    特殊字符                ||                                 字符串连接符

                               --                                 PL/SQL中的单行注释

                              /*,*/                              PL/SQL中的多行注释,多行注释不能嵌套

                             <<,>>                            标签分割符,只为了标示程序中的特殊位置

                             ..                                    范围操作符比如:1..5标示从1到5

    算术运算符           + - * /                            基础算术运算符

                             **                                  求幂操作例子:2**3=8

    关系运算符          > ,< ,>=, <=, =              基本关系运算符

                             <>,!=                             不等于运算符

    逻辑运算符          and,or,not                         逻辑运算符

    PL/SQL程序的主体执行部分

    赋值语句:

    (1)接收用户的输入:

     

    declare
      n int; --定义一个变量来接收用户输入的数值
    begin
       n:=&a; --弹出一个消息框进行输入
    end;

     

    (2)从查询结果中赋值

    set serveroutput on;
    declare
    n number(4);
    begin
       select empno into n from emp where='7369';
    dnms_output.put(n);
    end;

    PL/SQL控制语句

    (1)if 条件then 条件为真时执行      elsif … then      end if;

    判断if正确则执行then,否则执行else(elsif为嵌套判断)

    注意elsif,里面少一下e.

    (2)Case  var  when ... then    when … then   end

    有逻辑的从数值中做出选择

    (3)Loop     exit    end loop

    循环控制,用判断语句执行exit

    (4)Loop       exit when …        end loop

    同上,当when为真时执行exit

    (5)while 条件 loop     循环体    end loop

    当while为真时循环

    (6)for  循环变量  in  [rerverse意思是反转即从上限想下限循环]  循环下限..循环管上限  loop    循环体    end loop

    已知循环次数的循环

    pl/sql中的异常
    1)常见的异常:
    异常 含义
    access_into_null 未初始化对象
    case_not_found case中选项与用户输入不匹配
    collection_is_null 给尚未初始化的表或者数值进行赋值
    cursor_already_open 重新打开已经打开的游标
    dup_val_on_index 重复值存储在唯一索引的数据中
    invalid_cursor 执行非法的游标
    invalid_number 字符串转换为数字
    no_data_found 没有查找到请求的行
    too_many_rows 返回多行
    value_error 大小限制
    zero_divide 以零做除数
    (2)自定义异常
    在declare中定义异常形式为:异常名 exception
    自定义的异常需要触发,所以在发生可能发生异常的地方写raise 异常名
    异常捕获
    declafe
      myexception exception;
       myempno  number;
    begin
       select empno into myempno from emp where empno='1234';
       if myempno=null then
          raise myexception;
    exception
         when myexception then
              dbms_output.put_line('');
        when others then
             dbms_output.put_line('');
    end;
    
    
    (3)生抛异常
    raise_application_error(error_number,error_message,[keep_error]);

     

     

     

     

     

     

     

     

     

                                                   

    有多大成功就承受过多大压力
  • 相关阅读:
    android应用框架搭建------BaseActivity
    Android中Application类用法
    Android App框架设计之编写基类BaseActivity
    android Application类的详细介绍
    Linux使用jstat命令查看jvm的GC情况
    cocos2dx怎样设置ios和Android横屏竖屏的几种方法
    网络请求 http get post 一
    Java多线程中wait, notify and notifyAll的使用
    一个人生活,怎样摆脱孤独提升幸福感?
    js控制文本框仅仅能输入中文、英文、数字与指定特殊符号
  • 原文地址:https://www.cnblogs.com/lzlnd/p/4808188.html
Copyright © 2020-2023  润新知