oracle总结 下载本文

Char类型说明:oracle中的编号是96

1,dump函数可以查看每一行的内部存数结构。

1. 可以使用chr函数将ascll码转换成字符select chr(97) from dual;显示结果是a字符 2. 也可以使用ascll函数将字符转换成ascll码select ascll(‘a’) from dual;显示结果是97 3. 32正好是空格的ascll码

4. Char类型是固定长度,总会以空格来补充以达到一个固定长度。它会浪费存储空间。

Oracle的数据类型的长度单位是字节。

5. 一个汉字在oracle中占用两个字节,字母和符号只占一个字节。 6. char类型最多占用2000字节的存储空间 Varchar2类型说明:oracle中的编号是1

1. 它是一种可变的字符类型,最多占用4000个字节的存储空间

2. 一个字符占多少字节,是由当前系统采用的字符集来决定的。例如:如果是一个汉字字符

就占两个字节,如果是字母或者符号就站一个字节。

3. 在oracle 10g中字符类型的宽度定义时,可以指定单位如下:

Char(10 byte);最多只能存放5个汉字,10个字符或者符号 Char(10 char);最多只能存放10个汉字,20个字符或者符号。 即char(10 char)相当于char(20)

如果在定义类型时不指定单位。默认是byte,即以字节为单位。 查看当前系统采用的字符集

Select * from nls_database_parameters where parameter=’NLS_CHARACTERSET’; 如果不知道当前系统的字符集时,可以使用lengthb()函数查看汉字占几个字节。 1. 例如select lengthb(‘程’) from dual;结果显示2说明汉字占两个字节。 Char 和varchar2的比较

1.char是不可以变的长度,不够的以空格添补。

例如:都定义10个字节分别插入a在char里面和varchar2中,第一个后面有9个空格,但是第二个后面没有空格

Nchar和nvarchar2的比较说明:在它们中一个字符都占2个字节。

Nchar(10)和nvarchar2(10)在表结构中都以字节存储分别显示20个字节 Oracle 10g以上的对nchar和nvarchar都采用utf-16字符集

Raw的说明:

Raw属于二进制数据,nchar和nvarchar在进行存储时,会进行字符集转换。RawRaw占用一个字节。也是可变的。

不需要转换。 数值类型:

1) number:number(p,s);p和s都是可选的。P指精度,即总位数。1到38.默认精度是

38

s是小数位数。 第六章游标:

一)游标是指向上下文区的句柄或者指针。为了处理sql语句,oracle将在内存中分配一个区域,叫做上下文区。

处理显式游标所必需的4个步骤:

1) 声明游标

首先要定义游标的名字,把游标和某select语句相互关联起来具体语法: Cursor cursor_name is select_statement;

Cursor_name:是游标的名字,select_statement:是使用该游标处理的查询。 例子: Declare

Name varchar2(10 char); Age number(2); Cursor cur_cjqinfo is Select name,age from cjqinfo Where age between 18 and 40; 打开游标的语法:open cursor_name;

游标打开时,1.将会检测绑定变量的值,并且只在次检测。2.基于的绑定变量的值和查询中所引用的表的内容,确定活动集。3.活动集指针指向第一行。

一旦游标被打开,就无法再次打开,除非先关闭后在打开。若对自己打开的游标在打开回报错误:ora-6511;

3) 取得结果放入pl/sql变量中(用游标检索值)

查询的into子句是fetch语句的一部分。Fetch语句有两种形式: 1. fetch cursor_name into list_of_variables 2. fetch cursor_name into Pl/sql_record 例子: Declare Begin

Open cursor_info;

Fetch cursor_info into phone; Name varchar2(10 char); Age number(2); Cursor cursor_cjqinfo is Select * from cjqinfo; Phone number(12);

2) 为查询打开游标

End;

Fetch cursor_info into name,age;

4) 关闭游标

关闭游标的语法:close cursor_name;同样关闭一个已经关闭的游标是非法的。也会产生ora1001错误。

游标有四个有效的属性:%found,%notfound,%isopen,%rowcount 带参数的游标:

Declare Declare

Cursor cursor_info(p_age number(2),p_gender char(2)) Is

Select * from info where age=p_age and gender=p_gender; V_Name varchar2(10 char); V_Age number(2); V_Gender char(2); Cursor cursor_info is Select * from info

Where age=v_age and gender=v_gender;

把它改为参数化的游标

打开右边传值:

Open cursor_info(21,’男’);

显式游标被用于处理返回多行数据的select语句。 二)隐式游标

隐式游标别用于处理insert,update,delete,select…into 语句。Sql游标由pl/sql引擎打开和关闭。

例子:如果update语句没有匹配任何数据行,则下面的模块将执行一个insert语句; Begin End;

Update rooms

Set number_seats=100 Where room_id=99980; If sql%notfound then

Insert into rooms(room_id,number_seats) Values(99980,100); End if;