使用存储过程的好处:
第一、大大提高效率。存储过程本身的执行速度非常快,而且,调用存储过程可以大大减少同数据库的交互次数。
第二、提高安全性。假如将SQL语句混合在ASP代码中,一旦代码失密,同时也就意味着库结构失密。
第三、有利于SQL语句的重用。
oracle 存储过程的基本语法
1.基本结构
CREATE OR REPLACE PROCEDURE 存储过程名字(参数1 IN NUMBER, 参数2 IN NUMBER)
IS
变量1 INTEGER :=0;
变量2 DATE;BEGIN
END 存储过程名字
2.SELECT INTO STATEMENT
将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)
例子:
BEGIN
SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx;
EXCEPTIONWHEN NO_DATA_FOUND
THEN xxxx;
END;
3.IF 判断
IF V_TEST=1 THEN
BEGIN
do something
END;
END IF;
4.while 循环
WHILE V_TEST=1 LOOP
BEGINXXXXEND;
END LOOP;
5.变量赋值
V_TEST := 123;
6.用for in 使用cursor
...
IS
CURSOR cur IS SELECT * FROM xxx;
BEGIN
FOR cur_result in cur LOOP
BEGIN
V_SUM :=cur_result.列名1+cur_result.列名2
END;
END LOOP;
END;
7.带参数的cursor
CURSOR C_USER(C_ID NUMBER)
IS
SELECT NAME FROM USER WHERE TYPEID=C_ID;
OPEN C_USER(变量值);
LOOP
FETCH C_USER INTO V_NAME;
EXIT FETCH C_USER%NOTFOUND;
do something
END LOOP;
CLOSE C_USER;
例子:
create table system.UserLogin
(
u_id number primary key,
uname varchar2(20) not null,
upass varchar2(20) not null,
sex number(2),
hobby varchar2(50),
beizhu nvarchar2(100),
xieyi number(1)
)
create sequence system.seq_u_id
start with 1--以1开始
increment by 1--自动增长2
nomaxvalue
cache 10
select *from system.userlogin
--drop table system.userlogin
select system.seq_u_id.nextval from dual;
create or replace trigger system.seq_uid_bifer_trigger
before insert on system.UserLogin
for each row
when(new.u_id is null)
begin
select system.seq_u_id.nextval into:new.u_id from dual;
end;
insert into system.userlogin(uname,upass,sex) values('zys','zys',1)
分享到:
相关推荐
在Oracle数据库中,触发器(Triggers)是一种存储过程,它们自动执行,当特定的数据库事件发生时,如INSERT、UPDATE或DELETE操作。调试Oracle触发器是开发和维护数据库应用程序时的重要步骤,可以帮助我们找出潜在的...
在Oracle数据库中,为了实现表中某个字段的自动递增功能,通常会使用序列(sequence)结合触发器(trigger)的方式来完成。这种方式不仅能够确保数据的一致性和完整性,还能提高数据处理效率。本文将详细解释如何...
这种结合使用序列和触发器的方法是Oracle中一种常见的主键自增实现方式。它不仅确保了主键的唯一性和连续性,还大大提高了数据插入效率。在实际应用中,根据具体需求调整序列的参数以及触发器的逻辑是非常重要的。...
此文档对oracle存储过程做了详细讲解,游标用法 变量定义,触发器,序列,DML DCL DDL
#### 一、Oracle存储过程分页原理及实现方法 在Oracle数据库中,实现分页查询通常有两种方法:一种是使用`ROWNUM`伪列,另一种则是通过存储过程实现。其中,使用存储过程进行分页更加灵活且易于维护。 #### 二、...
触发器是一种特殊类型的存储过程,它会在特定的事件(如INSERT、UPDATE、DELETE操作)发生时自动执行。下面将展示如何创建一个触发器,以便在向`test`表中插入新记录时自动填充`user_id`字段。 ##### 创建表(TABLE...
但是,Oracle提供了另外一种机制,通过结合使用触发器(trigger)和序列(sequence)来达到类似的效果,使得我们能够在插入新记录时自动为某个列分配唯一的递增数值。以下是一个详细的步骤和解释: 1. **创建序列...
Oracle触发器是数据库对象,它在特定的数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行...在设计数据库系统时,应优先考虑使用约束、存储过程和其他替代方法,只有在这些方法无法满足需求时,才考虑使用触发器。
触发器是一种存储过程,当满足预定义的条件(即触发事件)时,由Oracle数据库自动执行。它们不需显式调用,而是与数据库操作绑定在一起,如表的增删改操作。根据作用范围,触发器可分为语句级和行级: 1. 语句级...
相较于传统的手动监测或依赖GIS应用程序的方法,使用Oracle触发器的优势在于: 1. **实时性**:触发器能够在数据变化的瞬间作出反应,确保状态更新的即时性。 2. **自动化**:减少了人工干预,降低了出错概率,提高...
在Oracle数据库中,触发器是一种数据库对象,它可以在特定的DML(数据操纵语言)操作(如INSERT、UPDATE或DELETE)发生时自动执行一段PL/SQL代码。在本例中,我们将讨论如何创建一个触发器来监控表的增、删、改操作...
3. 查询基础:涵盖了Oracle SQL语言的基本知识,包括数据查询语言DQL(Data Query Language),重点讲解SELECT语句的基本结构及其子句的使用方法。 4. 单行函数和分组函数:详细介绍了单行函数,如字符、数字和日期...
4. **数据库对象**:表、视图、索引、序列、存储过程、触发器、同义词等的创建、修改和删除。 5. **数据库管理**:用户权限管理、角色、表空间、数据泵导入导出、备份与恢复策略。 6. **性能优化**:SQL调优、索引...
在复杂的应用场景中,可能需要在插入或更新数据时实时维护连续天数,此时可以考虑使用触发器或存储过程。但是,这通常会增加数据库的复杂性和维护难度,应谨慎使用。 总之,计算Oracle中的连续天数涉及多种技术,...
首先,让我们了解Oracle存储过程的概念。存储过程是一组预编译的SQL语句,它们被存储在数据库中,可以像函数一样被调用。存储过程可以提高性能,减少网络流量,并提供更好的安全性,因为它们可以封装复杂的操作并...
提供的存储过程 `pr_CreateIdentityColumn` 可以自动化创建序列和触发器的过程。该存储过程接受两个参数:表名和自增字段名。在执行存储过程之前,需要确保该过程已经编译过,以确保语法正确并可以成功运行。 5. *...