Oracle基本数据类型:
Oracle的基本呢数据类型按类型分为:字符串类型,数据类型,日期类型,LOB类型等。
1.字符串类型:
①char:定长字符串,最多存储2k字节,在不指定char长度的情况下,默认为1个字节的长度。
②ncahr:包含UNCODE格式的定长字符串,最多可以存储2k的字节。
③varchar:变长字符串,与char类型不同,不会使用孔飞填充至最大长度,可以最大存储4k字节的信息。
④nvarchar:包含Unicode个数数据的变长字符串,最大存储为4k字节。
2.数据类型:
①number(精度,有效位数)。
②integer:是number的子类,等同于number(38,0),用于存储整数,在插入或者存储数据的时候带有小数部分将会被四舍五入。
③binary_float:是32位单精度浮点数据类型,可以支持到6位精度,每个binary_float的值需要5个字节包括长度字节。
④binary_double:长度为64位的双精度浮点数据类型,每个binary_double的值需要9个字节包括长度。
⑤float(n精度):精度表示可以存储数据的数目,n的范围可以从1到126.
3.日期类型:
①date:用于存储日期和时间信息,一般占有7个字节的空间。
②timestamp:与date类型不同的是timestamp可以包含小数秒,小数点右边最多可以保留9位。
③timestamp with time zone类型:是timestamp的一个变种,包含了时区偏移量的值。
④timestamp with local time zone类型:
⑤interval year to moth
⑥interval day to second
4.LOB类型:
①clob类型:存储unicode类型的数据,支持固定宽度和变宽的字符集,nclob对象可以存储最大(4 gigabytes-1) * (database block size)
②Blob类型:存储非结构化的二进制数据大对象,可以理解为没有字符集语义的比特流,一般是媒体文件。
③bfile类型:二进制文件,存储在数据库外的系统文件,只读,数据库会将该文件当二进制文件进行处理。
5.RAW & Long RAW类型:
①Long类型:存储变长字符串,最多可以存储2GB字节数据,long类型的存储限制:
一个表中只有一列可以为long类型。
long列不能定义为主键或唯一主键。
不能建立索引。
long数据不能指定正则表达式。
函数或存储过程不能接受long数据类型的参数。
long列不能出现在where子句或完整性约束(除了null和not null约束)。
②long raw类型:能存储2GB的原始二进制数据。
③raw类型:用于存储二进制或字符串类型,变长二进制数据类型。最多可以存储2k字节信息。
PL/SQL :
/**declare
x number := 0;
cursor cur1 is select * from emp;
cursor cur2(eno number) is select * from emp where empno=eno;--参数游标
emp_record emp%rowtype;--表示emp表的行类型
begin
open cur1;--打开游标
loop--循环提取游标中的数据
fetch cur1 into emp_record;
exit when cur1%notfound;
--dbms_output.put_line(emp_record.ename);
end loop;
close cur1;--关闭游标,释放内存
/*loop
x:=x+1;
dbms_output.put_line(x);
exit when x>5;
end loop;
while x<8 loop
x:=x+1;
dbms_output.put_line(x);
end loop;
for x in reverse 1..6 loop
dbms_output.put_line(x);
end loop;
select sal into x from emp where empno=1;
exception
when too_many_rows then
dbms_output.put_line('too many rows');
when no_data_found then
dbms_output.put_line('no data found');
when others then
dbms_output.put_line('others');
select test(7499) from dual;
--隐式游标
-- for rd in (select * from emp) loop
-- dbms_output.put_line(rd.ename);
--end loop;
--参数游标:
open cur2(7499);
loop--循环提取游标中的数据
fetch cur2 into emp_record;
exit when cur2%notfound;
dbms_output.put_line(emp_record.ename);
end loop;
close cur2;
end;
*/
--存储过程:
/*
存储过程的语法:
create [or replace] procedure 存储过程名[(参数[in | out | in out]数据类型...)]
{is | as}
[说明部分]
begin
可执行部分
[exception 错误处理部分]
end [过程名];
begin
proc1;
end;
存储方法:
create or replace function test(eno in number) return number is
/*
函数的参数:
in 参数
out 参数
in out 参数
*/
salary number;
begin
select sal into salary from emp where empno=7499;
return salary;
exception
when too_many_rows then
return -1;
when no_data_found then
return -2;
when others then
return -3;
end test;
游标:1.在pl、sql块中执行select、insert、delete和update语句时,oracle会在内存中为其分配上下文区(缓冲区),游标是指向该区的一个指针或是命名一个工作区,或是一种结构化数据类型。它为应用等量齐观提供了一种对具有多行数据查询结果集中的每一行数据分别进行单独处理的方法,是设计嵌入式sql语句的应用程序的常用编程方式。
2.在每个用户会话中,可以同时打开多个游标,其数量有数据库初始化参数文件中的OPEN_CURSOR参数定义。
3.对于不同的sql语句,游标的使用情况不同:
①非查询语句:游标是隐式的;②结果时单行的查询语句:游标可以是隐式的或显示的;③结果时多行的查询语句:游标是显示的。
(1)显示游标:步骤一:游标的定义:CURSOR cursor_name[(parameter[,parameter]...)][RETURN datatype] IS select_statement;
步骤二:打开游标:OPEN cursor_name[([parameter=>]value[,[parameter=>]value]...)];
步骤三:提取游标数据:FETCH cursor_name INTO {variable_list|record_variable};
步骤四:关闭游标:CLOSE cursor_name;
游标的属性:cursor_name%FOUND:boolean,当最近一次提取游标惭怍fetch成功则为true,否则为false;
cursor_name%NOTFOUND:boolean,与cursor_name%FOUND相反;
cursor_name%ISOPEN:boolean,当游标已经打开时返回true;
cursor_name%ROWCOUNT:数字类型属性,返回已经从游标中读取的记录数;
存储过程:
create or replace procedure proc1(eno in number,salary out number) is
begin
select sal into salary from emp where empno=eno;
dbms_output.put_line(salary);
end proc1;
/*
存储过程的调用方式:
1.在命令窗口下:exec produre_name(参数值...)
SQL> set serverput on
Cannot SET SERVERPUT
SQL> set serveroutput on
SQL> exec proc1;
1600
PL/SQL procedure successfully completed
SQL>
2.在SQL窗口下:
begin
produre_name(参数值...)
end;
3.一个存储过程中可以调用另一个存储过程。
储存过程的参数:
in
out
in out
存储过程和函数的区别:
1.存储过程和函数以命名的数据库对象形式存储于数据库中。存储在数据库中的优点是很明显的,因为代码不用保存在本地,用户可以在任何客户机上登录到数据库,并调用或修改代码。
2.存储过程和函数除了返回结果有区别外,其实是一样的,存储过程不返回结果,函数要返回结果。
3.存储过程和函数可游由数据库提供安全保证,要想使用存储过程和函数,需要有存储过程和函数的所有者的授权,只有被授权的用户或者创建者本身才能执行存储过程或调用函数。
4.存储过程和函数的信息是写入数据字典的,所以存储过程可以看作是一个公用模块,用户编写的pl/sql程序或其他存储过程都可以调用它(但存储过程和函数不能调用pl/sql程序),一个重复使用的功能。可以设计成为存储过程,比如:显示一张工资统计表,可以设计成存储过程;一个经常调用的计算,可以设计成为存储函数;根据雇员编号返回雇员的姓名,可以设计成存储函数。
*/
包:
1.包是用来存储相关程序结构的对象,它存储于数据字典中。
2.包由两个分离的部分组成:包头(package)和包体(packagebody)。包头是包的书名部分,是对外的操作接口,对应用是可见的;包体是包的代码和实现部分,对应用来说是不可见的黑盒。
3.创建包:包头:create [or replace] package_name
[authid {current_user|definer}]
{is | as}
[共有数据类型定义[共有数据类型定义]...]
[共有游标声明[共有游标声明]...]
[共有变量、敞亮声明[共有变量、常量声明]...]
[共有子程序声明[共有子程序声明]...]
end [package_name];
包体:create replace package body package_name
is
function 实现
procedure 实现
...
end package_name
删除包:
1.删除包头:drop package package_name
2.删除包体:drop package body package_name
3.重新编译包头:alter package package_name compile package
4.重新编译包体:alter package package_name compile package body
*/
create or replace package pkg1 is
-- Author : 非若
-- Created : 2016/8/6 12:41:11
-- Purpose :
function fn2(eno number)return varchar2;
procedure proc3(eno number,sename out varchar2);
end pkg1;
create or replace package body pkg1 is
function fn2(eno number)return varchar2 is
sename varchar2(20);
begin
select ename into sename from emp where empno=eno;
return sename;
end fn2;
procedure proc3(eno number,sename out varchar2) is
begin
select ename into sename from emp where empno=eno;
end proc3;
end pkg1;
使用Zabbix监控Oracle数据库
Orabbix介绍 监控Oracle数据库我们需要安装第三方提供的Zabbix插件,我们先测试比较有名的Orabbix,http://www.smartmarmot.com/product/orabb ...
Oracle 数据库知识汇总篇
Oracle 数据库知识汇总篇(更新中..) 1.安装部署篇 2.管理维护篇 3.数据迁移篇 4.故障处理篇 5.性能调优篇 6.SQL PL/SQL篇 7.考试认证篇 8.原理体系篇 9.架构设计篇 ...
Oracle数据库该如何着手优化一个SQL
这是个终极问题,因为优化本身的复杂性实在是难以总结的,很多时候优化的方法并不是用到了什么高深莫测的技术,而只是一个思想意识层面的差异,而这些都很可能连带导致性能表现上的巨大差异. 所以有时候我们应该先 ...
Oracle 数据库语句大全
Oracle数据库语句大全 ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CH ...
Oracle数据库升级(10.2.0.4->;11.2.0.4)
环境: RHEL5.4 + Oracle 10.2.0.4 目的: 在本机将数据库升级到11.2.0.4 之前总结的Oracle数据库异机升级:http://www.cnblogs.com/jyzha ...
混合框架中Oracle数据库的还原处理操作
在较早期的随笔粗略介绍了Oracle数据库的备份还原操作,本文想从开发框架的基础上介绍Oracle数据库的脚本或者还 ...
Oracle数据库的链接数目超标
测试场景:Oracle数据库的链接数目超标,iServer是否自动连接. 测试步骤:(1)设置了最大连接数为85,oracle后台进程有83:(2)开启3台iserver(A,B,C)A,B发布tes ...
将Oracle数据库中的数据写入Excel
将Oracle数据库中的数据写入Excel 1.准备工作 Oracle数据库"TBYZB_FIELD_PRESSURE"表中数据如图: Excel模板(201512.xls): 2 ...
Oracle数据库11g各版本介绍及功能比较
.标准版和企 业版.所有这些版本都使用相同的通用代码库构建,这意味着企业的数据库管理软件可以轻松地从规模较小的单一处理器服务器扩展到多处理器服务器集 群,而无需更改一行代码.Oracle数据库11g企 ...
Oracle数据库,数据的增、删、改、查
oracle数据库中,数据的增.删.改.查,通过SQL语句实现 SQL:结构化查询语言: 特点:不区分大小写:字符串用单引号引起来:语句结束用分号表示结束: 行注释,在语句的最前面加"--& ...
随机推荐
POCO库——Foundation组件之缓存Cache
缓存Cache:内部提供多种缓存Cache机制,并对不同机制的管理缓存策略不同实现: ValidArgs.h :ValidArgs有效键参数类,模板参数实现,_key:键,_isValid:是否有效, ...
clear属性
clear:规定元素的哪一侧不允许其他浮动元素. clear 属性定义了元素的哪边上不允许出现浮动元素.在 CSS1 和 CSS2 中,这是通过自动为清除元素(即设置了 clear 属性的元素)增加上 ...
loj 1412(树上最长直径的应用)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1412 思路:好久没写题解了,有点手生,这题从昨天晚上wa到现在终于是过了...思想其实 ...
从零开始学ios开发(八):Autorotation and Autosizing
不好意思,这一篇间隔的时间有点长,最近实在是事情太多,耽搁了,好了,长话短说,下面继续学习ios. 这次学习的内容是Autorotation和Autosizing,Autorotation就是屏幕内容 ...
编译型/解释型语言,什么时候用shell
编译型语言 很多传统的程序设计语言,例如Fortran.Ada.Pascal.C.C++和Java,都是编译型语言.这类语言需要预先将我们写好的源代码(source code)转换成目标代码(obje ...
Java 环境搭建的一些问题
1.http://www.eclipse.org/webtools/ eclipse 官网,SE.EE方向是两个不同eclipse 2.tomcat 对eclipse来说是一个插件,需要额外下载 T ...
CSAPP:第三章程序的机器级表示3
程序的机器级表示3 关键点:过程.调试.指针 过程1.运行时栈2.转移控制3.数据传递4.栈上的局部存储5.寄存器中的局部存储空间理解指针使用GDB调试器 过程 1.运行时栈 x86-64的栈向低 ...
【pycharm 警告】unittest RuntimeWarning: Parent module ” not found while handling absolute import
Pycharm 2016.2执行单元测试遇到如下问题: RuntimeWarning: Parent module ‘YOUR_MODULE_HERE’ not found while handlin ...
TurboLinux系统管理习题一
TurboLinux系统管理习题一 1. 使用vi编辑文本只读时,强制存盘并退出的命令是?(单选题)A :w! B :q! C :wq! D :e!答案 ...
MySQL 5.5 服务器变量详解(一)
autocommit={0|1} 设定MySQL事务是否自动提交,1表示立即提交,0表示需要显式提交.作用范围为全局或会话,可用于配置文件中(但在5.5.8之前的版本中不可用于配置文件),属于动态变量 ...