> 数据类型:
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 --如果出现此异常
.. -- 则进行此异常处理;