数据库之【标量类型及其使用篇】
来源:互联网 发布:云计算服务器搭建 编辑:程序博客网 时间:2024/06/10 10:26
******************************************
数据库之【标量类型及其使用篇】
******************************************
【1.标量类型】
--数字binary_integer --带符号的整数-2的31次幂-1到2的31次幂到-1natural --自然数naturaln --非自然数且非空positive --正整数positiven --非正整数且非空signtype --只能存1、0、-1三个值number --存整数、定点数、浮点数float --126位的二进制的浮点数decimal --38位十进制的定点数integer --38位十进制数字的整数real --63位二进制数字的浮点数pls_integer --带符号的整数、区别是以机器运算为基础,速度快、存储空间小--字符char --固定长度的字符32767raw --存二进制数据或字节串long long raw --可变长度字符串32760varchar2(varchar string)--可变长度的字符串32767数据类型 SQL类型 PL/SQL类型CHAR 1..2000 1..32767LONG 1..2GB 1..32760LONG RAW1..2GB 1..32760RAW 1..2000 1..32767VARCHAR2 1..4000 1..32767--日期date --日期时间timestamp--日期时间精确到小数秒到小数后0-9(默认6)位--布尔boolean--LOB类型 存储非结构化数据blob/clob/nclob/bfile--属性类型%type --变量或表字段对象的引用%rowtype--表行的引用
【ORACLE中定义变量的几种方式】
--声明可从外面接收的参数num number :=&id;--声明可从外面接收的公用变量,并有提示accept num prompt '请输入一个数字:';--使用时:&num就可以在PLSQL块中访问--声明可以公用的变量variable num number;--在PLSQL语句外进行赋值execute :num :=100;--在PLSQL语句中进行使用:num :=100;
【2.举例使用】
--2.1 BFILE使用示例select * from dba_directories; --查询系统中创建的所有目录,在SYS用户下--创建目录create directory book_text as 'c:\text';grant read on directory images to scott;create table my_book (file_descr varchar2(40),book_file bfile);--插入insert into my_book values('第一章',bfilename('BOOK_TEXT','test.txt'));--读写declare--写 fhandle utl_file.file_type;begin fhandle := utl_file.fopen('BFILE_DIR', 'lunartest1.txt', 'w'); utl_file.put_line(fhandle, 'aaa'); utl_file.put_line(fhandle, 'bbb'); utl_file.fclose(fhandle);end;/declare--读 fhandle utl_file.file_type; fp_buffer varchar2(4000);begin fhandle := utl_file.fopen('BFILE_DIR', 'lunartest1.txt', 'R'); utl_file.get_line(fhandle, fp_buffer); dbms_output.put_line(fp_buffer); utl_file.get_line(fhandle, fp_buffer); dbms_output.put_line(fp_buffer); utl_file.fclose(fhandle);end;/--2.2 BLOB使用示例create directory images as 'c:\images'; --创建目录grant read on directory images to scott;--授权给用户create table my_img(img_no number,img_name varchar2(200),img blob); --建BLOB类型字段表--将文件中的图片存到数据库中declare l_bfile bfile; l_blob blob;begin insert into my_img (img) values (empty_blob()) return img into l_blob; l_bfile := bfilename('IMAGES', '\one.jpg'); dbms_lob.open(l_bfile, dbms_lob.file_readonly); dbms_lob.loadfromfile(l_blob, l_bfile, dbms_lob.getlength(l_bfile)); dbms_lob.close(l_bfile); commit;end;--2.3 CLOB示例create table test1(tno number,tname varchar2(200),text clob);insert into test1 values(1,'李海','追求幸福美好的生活将使他的青春变作一曲闪光的乐章!');declare c_text clob; sta number; len number; t_text varchar2(2000);begin select text into c_text from test1 where tno = 1; sta := 1; len := 5; --len :=length(c_text);--用函数获取文本长度 dbms_lob.read(c_text, len, sta, t_text); dbms_output.put_line(t_text);end;--2.4 TABLE类型示例(组合类型的使用)DECLARE TYPE EmpTabTyp IS TABLE OF emp%ROWTYPE; emp_tab EmpTabTyp := EmpTabTyp(NULL); -- initialize(定义同时初始化必须的)BEGIN SELECT * INTO emp_tab(1) FROM emp WHERE empno = 7788; dbms_output.put_line(emp_tab(1).ename || ' sal is: ' || emp_tab(1).sal);END;--2.5 RECORD,VARRAY记录数组类型示例(组合类型的使用)DECLARE TYPE definition IS RECORD( xm VARCHAR2(20), gz VARCHAR2(200)); TYPE DICTIONARY IS VARRAY(2000) OF definition; lexicon DICTIONARY := DICTIONARY(); --定义同时初始化(必须的)BEGIN lexicon.EXTEND; select ename, job into lexicon(1).zm,lexicon(1).gz from emp where empno = 7369; DBMS_OUTPUT.put_line(lexicon(1).xm || lexicon(1).gz);END;
- 数据库之【标量类型及其使用篇】
- PHP7之标量类型-declare
- 标量类型与数据库的列所使用的类型相同
- oracle 常用标量类型
- 标量类型集锦
- c++ scalar 标量类型
- C语言标量类型
- PHP标量类型-字符串
- EF中使用数据库的标量值函数
- 标量类型与类型转换
- 数据类型之标量
- 标量类型(scalar types)初始化
- PHP7标量类型声明RFC
- 我们使用标量
- 数据库索引及其使用
- 云客Drupal8源码分析之数据库系统及其使用
- 枚举类型及其使用_2009_05_17
- HttpEntity的类型及其使用
- 第八周实验报告3
- Linux Vi编辑器使用
- 内核学习的相关资源
- 谈iframe内存释放问题(转载)
- 配置Linux(cent os 5.2)服务器并安装PHP、MySQL、NGINX
- 数据库之【标量类型及其使用篇】
- my .vimrc
- 奇异函数
- 服务中监视会话切换
- 使用RHManagedObjectContextManager 来进行 CoreData的数据处理
- 拿win7学习php+mysql比较坑爹呀
- assert()函数用法总结
- 用bitmap实现中位数的算法
- 设计模式与实例代码:Template Method模式