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;

Oracle数据库(1)的更多相关文章

  1. 使用Zabbix监控Oracle数据库

    Orabbix介绍 监控Oracle数据库我们需要安装第三方提供的Zabbix插件,我们先测试比较有名的Orabbix,http://www.smartmarmot.com/product/orabb ...

  2. Oracle 数据库知识汇总篇

    Oracle 数据库知识汇总篇(更新中..) 1.安装部署篇 2.管理维护篇 3.数据迁移篇 4.故障处理篇 5.性能调优篇 6.SQL PL/SQL篇 7.考试认证篇 8.原理体系篇 9.架构设计篇 ...

  3. Oracle数据库该如何着手优化一个SQL

    这是个终极问题,因为优化本身的复杂性实在是难以总结的,很多时候优化的方法并不是用到了什么高深莫测的技术,而只是一个思想意识层面的差异,而这些都很可能连带导致性能表现上的巨大差异. 所以有时候我们应该先 ...

  4. Oracle 数据库语句大全

    Oracle数据库语句大全 ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CH ...

  5. 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 ...

  6. 混合框架中Oracle数据库的还原处理操作

    在较早期的随笔<Oracle如何实现创建数据库.备份数据库及数据导出导入的一条龙操作>粗略介绍了Oracle数据库的备份还原操作,本文想从开发框架的基础上介绍Oracle数据库的脚本或者还 ...

  7. Oracle数据库的链接数目超标

    测试场景:Oracle数据库的链接数目超标,iServer是否自动连接. 测试步骤:(1)设置了最大连接数为85,oracle后台进程有83:(2)开启3台iserver(A,B,C)A,B发布tes ...

  8. 将Oracle数据库中的数据写入Excel

    将Oracle数据库中的数据写入Excel 1.准备工作 Oracle数据库"TBYZB_FIELD_PRESSURE"表中数据如图: Excel模板(201512.xls): 2 ...

  9. Oracle数据库11g各版本介绍及功能比较

    .标准版和企 业版.所有这些版本都使用相同的通用代码库构建,这意味着企业的数据库管理软件可以轻松地从规模较小的单一处理器服务器扩展到多处理器服务器集 群,而无需更改一行代码.Oracle数据库11g企 ...

  10. Oracle数据库,数据的增、删、改、查

    oracle数据库中,数据的增.删.改.查,通过SQL语句实现 SQL:结构化查询语言: 特点:不区分大小写:字符串用单引号引起来:语句结束用分号表示结束: 行注释,在语句的最前面加"--& ...

随机推荐

  1. lucene.net helper类 【结合盘古分词进行搜索的小例子(分页功能)】

      转自:http://blog.csdn.net/pukuimin1226/article/details/17558247 添加:2013-12-25 更新:2013-12-26 新增分页功能. ...

  2. IOS 日志输出控制

    用以下内容可以控制在debug版本中打印日志,而在release版本中不打印 #ifdef DEBUG# define DBLog(format,...) NSLog((@"[%s][%s] ...

  3. 黄聪:TinyMCE 4 增强 添加样式、按钮、字体、下拉菜单和弹出式窗口

    我最喜欢 WordPress 3.9 的更新是使用了 TinyMCE 4.0 编辑器.新的 TinyMCE 看起来看起来更整洁(真正匹配WP仪表板),它有一些非常不错的附加功能.我的很多老主题和插件必 ...

  4. 在Java中使用Memcached(转)

    memcache的Java客户端调用,在网上还是有些少,很多都是php的.如何要想用Java调用memcache的服务,首先要有客户端的支持,我们先下载一个客户端吧.下载地址:https://gith ...

  5. 欧洲用户放弃Android转投iOS原因大起底

    据报道,近期在欧洲,有32.4%的新ios设备iPhone用户之前使用的是Android设备.那么为什么欧洲会有这么多Android用户会纷纷抛弃原有操作系统平台而转投iPhone呢? ios设备的同 ...

  6. spark基础练习(未完)

    1.filterval rdd = sc.parallelize(List(1,2,3,4,5))val mappedRDD = rdd.map(2*_)mappedRDD.collectval fi ...

  7. ylbtech-Unitity-CS:Hello world

    ylbtech-Unitity-CS:Hello world 1.A,效果图返回顶部   1.B,源代码返回顶部 1.B.1,Hello1.cs public class Hello1 { publi ...

  8. linux下shell脚本学习

    在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具.Shell不仅仅是命令的收集,而且是一门非常棒的编程语言.您可以通过使用shell使大量的任务自动化,shel ...

  9. 30天轻松学习javaweb_https协议的密码学

    https通过非对称加密实现数据安全1.CA机构提供数字证书,其中数字证书包含公钥.2.浏览器自带功能验证数字证书是否是CA机构颁发的.3.根据数字证书包含的公钥对表单数据进行加密.4.公钥提供方再根 ...

  10. JAVASE 打印输出--------01

    public class Demo01 { public String a1; public int a2; public Demo01(String a, int i) { a1 = a; a2 = ...