`
zys08
  • 浏览: 145888 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

oracle存储过程、触发器、序列基本用法

 
阅读更多

使用存储过程的好处:
第一、大大提高效率。存储过程本身的执行速度非常快,而且,调用存储过程可以大大减少同数据库的交互次数。
第二、提高安全性。假如将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触发器方法

    在Oracle数据库中,触发器(Triggers)是一种存储过程,它们自动执行,当特定的数据库事件发生时,如INSERT、UPDATE或DELETE操作。调试Oracle触发器是开发和维护数据库应用程序时的重要步骤,可以帮助我们找出潜在的...

    创建Oracle触发器用于表中序列值自增长(Helloblock写作)

    在Oracle数据库中,为了实现表中某个字段的自动递增功能,通常会使用序列(sequence)结合触发器(trigger)的方式来完成。这种方式不仅能够确保数据的一致性和完整性,还能提高数据处理效率。本文将详细解释如何...

    如何实现Oracle自增,序列,触发器都有

    这种结合使用序列和触发器的方法是Oracle中一种常见的主键自增实现方式。它不仅确保了主键的唯一性和连续性,还大大提高了数据插入效率。在实际应用中,根据具体需求调整序列的参数以及触发器的逻辑是非常重要的。...

    oracle存储过程各种写法

    此文档对oracle存储过程做了详细讲解,游标用法 变量定义,触发器,序列,DML DCL DDL

    Oracle存储过程分页

    #### 一、Oracle存储过程分页原理及实现方法 在Oracle数据库中,实现分页查询通常有两种方法:一种是使用`ROWNUM`伪列,另一种则是通过存储过程实现。其中,使用存储过程进行分页更加灵活且易于维护。 #### 二、...

    oracle建触发器与创建递增字段

    触发器是一种特殊类型的存储过程,它会在特定的事件(如INSERT、UPDATE、DELETE操作)发生时自动执行。下面将展示如何创建一个触发器,以便在向`test`表中插入新记录时自动填充`user_id`字段。 ##### 创建表(TABLE...

    Oracle中使用触发器(trigger)和序列(sequence)模拟实现自增列实例

    但是,Oracle提供了另外一种机制,通过结合使用触发器(trigger)和序列(sequence)来达到类似的效果,使得我们能够在插入新记录时自动为某个列分配唯一的递增数值。以下是一个详细的步骤和解释: 1. **创建序列...

    oracle 触发器

    Oracle触发器是数据库对象,它在特定的数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行...在设计数据库系统时,应优先考虑使用约束、存储过程和其他替代方法,只有在这些方法无法满足需求时,才考虑使用触发器。

    Oracle触发器用法实例详解

    触发器是一种存储过程,当满足预定义的条件(即触发事件)时,由Oracle数据库自动执行。它们不需显式调用,而是与数据库操作绑定在一起,如表的增删改操作。根据作用范围,触发器可分为语句级和行级: 1. 语句级...

    基于Oracle触发器的ArcSDE数据库要素级监测.pdf

    相较于传统的手动监测或依赖GIS应用程序的方法,使用Oracle触发器的优势在于: 1. **实时性**:触发器能够在数据变化的瞬间作出反应,确保状态更新的即时性。 2. **自动化**:减少了人工干预,降低了出错概率,提高...

    oracle监控某表变动触发器例子(监控增,删,改)

    在Oracle数据库中,触发器是一种数据库对象,它可以在特定的DML(数据操纵语言)操作(如INSERT、UPDATE或DELETE)发生时自动执行一段PL/SQL代码。在本例中,我们将讨论如何创建一个触发器来监控表的增、删、改操作...

    Oracle教程

    3. 查询基础:涵盖了Oracle SQL语言的基本知识,包括数据查询语言DQL(Data Query Language),重点讲解SELECT语句的基本结构及其子句的使用方法。 4. 单行函数和分组函数:详细介绍了单行函数,如字符、数字和日期...

    各种oracle练习(习题+答案)

    4. **数据库对象**:表、视图、索引、序列、存储过程、触发器、同义词等的创建、修改和删除。 5. **数据库管理**:用户权限管理、角色、表空间、数据泵导入导出、备份与恢复策略。 6. **性能优化**:SQL调优、索引...

    使用VB调用Oracle程序包内的存储过程返回结果集

    首先,让我们了解Oracle存储过程的概念。存储过程是一组预编译的SQL语句,它们被存储在数据库中,可以像函数一样被调用。存储过程可以提高性能,减少网络流量,并提供更好的安全性,因为它们可以封装复杂的操作并...

    Oracle计算连续天数,计算连续时间,Oracle连续天数统计

    在复杂的应用场景中,可能需要在插入或更新数据时实时维护连续天数,此时可以考虑使用触发器或存储过程。但是,这通常会增加数据库的复杂性和维护难度,应谨慎使用。 总之,计算Oracle中的连续天数涉及多种技术,...

    Oracle主键自增的办法

    提供的存储过程 `pr_CreateIdentityColumn` 可以自动化创建序列和触发器的过程。该存储过程接受两个参数:表名和自增字段名。在执行存储过程之前,需要确保该过程已经编译过,以确保语法正确并可以成功运行。 5. *...

Global site tag (gtag.js) - Google Analytics