异常分为预定义异常和用户自定义异常。
预定义异常是由系统定义的异常。由于它们已在standard包中预定义了,因此,这些异常可以直接在程序中使用,而不必在定义部分声明。
用户自定义异常则需要在定义部分声明后才能在可执行部分使用。用户自定义异常对应的错误不一定是oracle异常,例如,它可能是一个数据错误。
1、预定义异常
常见的预定义异常...
--下面的块中产生一个NO_DATA_FOUND异常:
delcare
type t_numbertabletype is table of number index by binary_integer;
v_numbertable t_n ...
包可将一些有联系的对象放在其内部。任何能在块定义部分出现的对象都可以在包中出现。这些对象包括存储过程、函数、游标、自定义的类型(例如PL/SQL表和记录)和变量。
我们可以在其它的PL/SQL块中引用包中的这些对象。也就是说,包为PL/SQL提供了全局变量。
1、包的定义
一个包由两个独立的部分组成---包头和包体。各部分被单独地存放在数据字典中。定义一个包,要分别定义包头和包体。
(1)定义包头
存储过程或函数必须在包头中预定义。也就是说,在包头中仅定义存储过程名或函数名以及它们的参数。存储过程或函数的执行代码将在包体中定义。这不同于无名块中定义存储过程和函数。
create or repl ...
存储过程与函数
1、存储过程
存储过程的参数
形式参数和实际参数,例如,有如下一个存储过程,该过程接收一个作家代码和一个工资值,将该作家的工资改为接收到的工资值。
create or replace procedure updateauths(
p_authscode auths.author_code%type,
p_authssalary auths.salary%type)
as
begin
update auths set salary=p_authssalary where author_code=p_authscode;
commit;
end up ...
游标
环境区域是用来处理SQL语句的一个oracle存储区域。游标是指向它的指针或句柄。通过游标,PL/SQL程序可以控制这个环境区域中被处理的语句。
Oracle中的游标有两种:显式游标、隐式游标。
显示游标是用cursor...is命令定义的游标,它可以对查询语句(select)返回的多条记录进行处理,而隐式游标是在执行插入(insert)、删除(delete)、修改(update)和返回单条记录的查询(select)语句时由PL/SQL自动定义的。
1、显式游标操作
显式游标在块定义部分、包或子程序中声明。当声明了显式游标后,可以通过以下三条命令控制显式游标的操作:打开游标、推进游标、 ...
PL/SQL中的流控制语句
选择控制语句(IF语句)
循环控制语句(LOOP语句和EXIT语句)
顺序控制语句(GOTO语句和NULL语句)
1、选择控制语句
if...then
if 条件 then
语句;
end if;
if...then...else
if...then...elsif
2、循环控制语句
LOOP WHILE...LOOP FOR...LOOP
(1)LOOP
EXIT语句可以在LOOP语句中出现多次,但不可以在LOOP语句外使用。有两种格式的EXIT语句:
EXIT:无条件地强迫终止循环;EXIT...WHEN:根据条件的值来终止 ...
PL/SQL(Procedural Language/SQL)是在标准SQL的基础上增加了过程化处理的语言,是Oracle对SQL的扩充。
SQL(Structured Query Language)是一种对关系数据库管理系统(RDBMS)进行操作的标准结构化语言,它用来设置、使用和维护关系数据库。
PL/SQL正是一种增加了过程化概念的SQL语言,它有以下一些标准SQL所没有的特征:
变量(包括预先定义的和自定义的)、控制结构(IF-THEN-ELSE)、自定义的存储过程和函数、对象类型
PL/SQL特性
1、块结构
块是PL/SQL程序的基本执行单元,所有的PL/SQL程序 ...
create or replace procedure GetRecords(name_out out varchar2,age_in in varchar2) as
begin
select NAME into name_out from test where AGE = age_in;
end;
create or replace procedure insertRecord(UserID in varchar2, UserName in varchar2,UserAge in varchar2) is
begin
insert into test valu ...
LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列
LONG RAW: 可变长二进制数据,最长2G
CLOB: 用来存储单字节的字符数据
NCLOB: 用来存储多字节的字符数据
BLOB: 用于存储二进制数据
BFILE: 存储在文件中的二进制数据,这个文件中的数据只能被只读访。但该文件不包含在数据库内。
CLOB,NCLOB,BLOB都是内部的LOB(Large Object)类型,最长4G,没有 LONG只能有一列的限制
我要保存图片、文本文件、Word文件各自最好用哪种数据类型? ...
这里打个比方,有个表usertable中有一个clob字段content,
select * from usertable t where t.content like '%130%'
比方说content字段中只有这么有三个这样的数据:"130478569","14852130455","45887744130"
如果在oracle10上面运行上面的sql语句将正常,会显示所有的数据,
但是在oracle9i上进行只显示"14852130455"...
在本机上有个oracle9i客户端,
在本机上执行以下命令
exp userid=用户名/@本机IP:1521:orcl file=c:\temp.dmp
可以备份成功
但是在用oracle10用上面的命令老是出错
用下面才可以,
exp 用户/密码@IP file=c:\temp.dmp
摘自oracle的电子杂志:
引用执行许多SQL语句的JDBC程序产生大量的Statement和PreparedStatement对象。通常认为PreparedStatement对象比Statement对象更有效,特别是如果带有不同参数的同一SQL语句被多次执行的时候。PreparedStatement对象允许数据库预编译SQL语句,这样在随后的运行中可以节省时间并增加代码的可读性。
然而,在Oracle环境中,开发人员实际上有更大的灵活性。当使用Statement或PreparedStatement对象时,Oracle数据库会缓存SQL语句以便以后使用。在一些情况下,由于驱动器自身需要 ...
oracle sql语句优化(转载)
http://www.blogjava.net/killme2008/archive/2007/03/02/101434.html
(1) 选择最有效率的表名顺序 ( 只在基于规则的优化器中有效 ) :
ORACLE 的解析器按照从右到左的顺序处理 FROM 子句中的表名, FROM 子句中写在最后的表 ( 基础表 driving table) 将被最先处理,在 FROM 子句中包含多个表的情况下 , 你必须选择记录条数最少的表作为基础表。如果有 3 个以上的表连接查询 , 那就需要选择交叉表 (intersection table) 作为基 ...
- 浏览: 32440 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
PreparedStatement防注入
上面说的是只是针对用jdbc运行sql时怕出错的一种解决方式, 针对楼上说的, ...
-- by qiuyuanshan -
PreparedStatement防注入
确定不需要再进行特殊字符处理? 如果用户输入类似<td></td>这 ...
-- by hilliate -
WEB移植时可能出现的问题
不好意思,就碰到一种情况,还没碰到第二种情况。。。
-- by qiuyuanshan -
WEB移植时可能出现的问题
二是什么,我现在也碰到这个问题啊,我已经用1.4的编译了,还是不行啊
-- by sunqi -
websphere下部署servlet ...
是为了热布署时不停机。。。。
-- by 抛出异常的爱






评论排行榜