• [最近学习]Oracle 9i PL/SQL (一)


    > 数据类型:
    raw: 用来存储非结构化数据的变长字符数据,最大长2000bytes
    long raw: 同raw,最大长2GB
    blob: 非结构化的二进制数据,4GB : image
    clob: 字符数据,4GB : text
    nclob: Unicode字符数据,4GB : ntext
    bfile: 用来把非结构化的二进制数据存储在数据库以外的操作系统文件中,4GB
        oracle在数据库中只存储文件指针,实际的文件存储在操作系统的外部文件中
    urowid: 用来存储表示任何类型列地址的二数据,可以是物理的,逻辑的或外部的


    >> PL/SQL:

    DECLARE //声明
      maxrec CONSTANT INT := 200; //声明常量 (常量名 CONSTANT 类型:=值;)
      i INT := 1; //声明变量
    BEGIN
      FOR i IN 1 .. maxrec LOOP //FOR循环
        INSERT INTO sx_test
          (test_id, test_name, test_body)
        VALUES
          (i,'Test Data','Test Data');
      END LOOP;
      dbms_output.put_line(i); //输出print
      COMMIT; //执行(有事务的概念)
    END;

    1. 定义变量的类型:
      1) %type: mydate SX_TEST.currentdate%type; 定义成此字段的类型
      2) %rowtype: 获得整个记录的数据类型
        区别: [变量名 数据表.列名%type]
              [变量名 数据表%rowtype]

        3) 定义一维表类型变量:type 表类型 is table of 类型 index by binary_integer;
      4) 定义多维表类型变量:type 表类型 is table of 表名%rowtype index by binary_integer;
      
    2. 表达式:
      1) 数值表达式: + , - , * , / ,**(乘方)
      2) 字符表达式:||
      3) 关系表达式: <,>,=,like,in,<=,>=,!=,between
      4) 逻辑表达式:not, or ,and (NOT > OR > AND)
      
    3. 语句:
      > if .. then .. end if
      > if .. then .. else .. end if
      
      > loop
         ..;
         if .. then exit else .. end if;
       end loop
      > loop
         ..;
         exit when .. ;
       end loop;
       
      > while .. loop
          ..;
        end loop;
      
      > for i in 上界..下界 loop
        ..
        end loop
      
    4. 游标 cursor
       游标是从数据表中提取出来的数据,以临时表的形式存放在内存中, 在游标中有一个数据指针,利用fetch语句可以移动cursor,从而对cursor中的数据进行操作,然后将操作结果写回数据表中
       1) 定义: cursor CURSOR_NAME is
                 SELECT 语句 //将游标指向某一个查询行,以备将来使用
       2) 实例:
          DECLARE
         tmpSal sx_test.test_id%TYPE;
         CURSOR myCursor IS
          SELECT * FROM sx_test WHERE test_id > tmpSal;
          curRec myCursor%rowtype;
       BEGIN
         tmpSal := 50;
         OPEN myCursor;
         if myCursor%isopen then -- %isopen是否打开,%found是否找到,%notfount是否没有找到,%rowcount返回游标的行数
          FETCH myCursor into curRec;
          dbms_output.put_line(to_char(curRec.test_name));
         else
          dbms_output.put_line('Cursor did not open!');
         end if;
       END;
       
       A) OPEN打开curosr执行了两步动作:a.将符合条件的记录送入内存; b.将指针指向第一条记录
       B) FETCH提取游标中的数据: fetch CURSOR_NAME into 变量名1,变量名2...(或,记录型变量名);
                
    5. 异常 Exception
      DECLARE EXC_NAME exception;
      RAISE EXC_NAME; --触发异常处理
      实例: Exception --异常段
         WHEN EXC_NAME THEN --如果出现此异常
          .. -- 则进行此异常处理;
          
     

  • 相关阅读:
    DFS迷宫递归所有路径 新手入门
    【翻译】Ext JS最新技巧——2016-3-4
    Android进程通信之一:两种序列化方式
    Ext JS 6应用程序Build后出现“c is not a constructor return new c(a[0])”的处理
    简约才是王道? CardView 的使用
    经过一段的努力,终于成为CSDN博客专家,感谢大家支持
    ACM_Uppercase(水题)
    ACM_01背包
    2018年北京信息科技大学第十届程序设计竞赛暨ACM选拔赛-B-precise math function
    goj N皇后问题
  • 原文地址:https://www.cnblogs.com/syveen/p/240933.html
Copyright © 2020-2023  润新知