[最近学习]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 --如果出现此异常
      .. -- 则进行此异常处理;
      
 

你可能感兴趣的:(oracle)