`
wyf
  • 浏览: 438061 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

创建Sequence的存储过程

阅读更多
很多人都知道在Oracle中并没有像其他数据库中的自增字段,那么我们怎样才能实现Oracle的自增字段功能呢?下面我们通过Oracle中的Sequence和Trigger来实现此功能。1、首先建立一个创建自增字段的存储过程//Written by Sun Zhenfang 20040903
create or replace procedure pr_CreateIdentityColumn
(tablename varchar2,columnname varchar2)
as
strsql varchar2(1000);
begin
       strsql := 'create sequence seq_'tablename'
 minvalue 1 maxvalue 999999999999999999 
start with 1 increment by 1 nocache';
       execute immediate strsql;
       strsql := 'create or replace trigger trg_'tablename'
 before insert on 'tablename' for each row begin 
select seq_'tablename'.nextval into :new.'columnname'
 from dual; end;';
       execute immediate strsql;
end;2、Oracle中执行动态SQL时要显示授权(即使该用户拥有该相关权限)GRANT CREATE ANY SEQUENCE TO "UserName";
GRANT CREATE ANY TRIGGER TO "UserName";(注重:数据库用户名区分大小写)3、重新Compile存储过程pr_CreateIdentityColumn4、搞定,下面我们就可以用这个存储过程建立自增自段了。5、调用存储过程建立自增字段(Note: 第一个参数是表名,第二个参数为自增字段的名字)exec pr_createidentitycolumn('sdspdept','deptid');
exec pr_createidentitycolumn('sdspuser','userid');
exec pr_createidentitycolumn('sdspsysrole','sysroleid');
exec pr_createidentitycolumn('sdspfp','sysfpid');
exec pr_createidentitycolumn('sdspphasemodel','phasemodelid');
exec pr_createidentitycolumn('sdspphase','phaseid');
本篇文章来自<A href='http://www.soidc.net'>IDC专家网</a> 原文链接:http://www.soidc.net/articles/1213781350028/20080209/1215945485218_1.html

 

分享到:
评论

相关推荐

    oracle 存储过程使用 sequence

    创建Sequence时,你可以指定初始值、增长步长、是否循环等属性。例如,创建一个名为`USER_SEQ`的Sequence: ```sql CREATE SEQUENCE USER_SEQ START WITH 1 INCREMENT BY 1 MINVALUE 1 NOMAXVALUE NOCYCLE; ``` 接...

    sqlserver中创建类似oracle序列的存储过程

    - **创建存储过程**:定义了 `getSequence` 存储过程,它接受一个整型参数 `@maxCount`。在这个过程中: - 定义局部变量 `@maxValue` 来存储当前的序列值。 - 从 `sequencetable` 表中获取当前的最大序列值。 - ...

    批量修改Oracle序列值的存储过程

    这篇博客分享的是一个自定义的存储过程,用于批量修改Oracle序列的当前值(CURRENT VALUE)。 首先,我们需要理解Oracle序列的基本结构和操作。序列由CREATE SEQUENCE语句创建,如: ```sql CREATE SEQUENCE seq_...

    ORACLE存储过程简析及C#调用.docx

    这个例子展示了如何在C#中创建一个`OracleCommand`对象,设置存储过程的参数,并执行存储过程。注意,调用存储过程时需要指定完整的包名和过程名,如`OPERATE_PRODUCTION.GetPro`。 总之,Oracle的Package提供了一...

    Oracle存储过程分页

    ### Oracle存储过程分页知识点详解 #### 一、Oracle存储过程分页原理及实现方法 在Oracle数据库中,实现分页查询通常有两种方法:一种是使用`ROWNUM`伪列,另一种则是通过存储过程实现。其中,使用存储过程进行...

    自动跳号的函数和存储过程

    例如,我们可以创建一个存储过程来插入新的记录并自动分配ID。 1. Oracle存储过程示例: ```sql CREATE OR REPLACE PROCEDURE insert_with_seq( p_column1 IN VARCHAR2, p_column2 IN VARCHAR2) AS v_id NUMBER;...

    PLSQL程序设计-存储过程函数触发器

    ### PL/SQL程序设计——存储过程、函数与触发器 #### 概述 PL/SQL是一种专门为Oracle数据库设计的过程化语言,它结合了SQL的数据操纵功能和传统编程语言的流程控制功能,使得开发者能够在数据库环境中编写更为复杂...

    存储过程技术分享 数据库存储过程.docx

    在Oracle数据库中,存储过程扮演着重要的角色,它允许开发人员创建复杂的业务逻辑并存储在数据库服务器上。 1. 序列(Sequence) 序列是一种自动增长或减少的数字序列,常用于生成唯一的主键值。`CREATE SEQUENCE`...

    Java调用SQL Server的存储过程详解

     作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程:  CREATE PROCEDURE GetContactFormalNames   AS  BEGIN  SELECT TOP 10 Title + "" "" + FirstName + "" "" + LastName ...

    oracle存储过程教程

    首先,我们要了解如何在存储过程中使用序列(Sequence)。序列是一种自增或自减的数字生成器,通常用于生成唯一的标识符。在Oracle中,你可以通过`SEQNAME.NEXTVAL`获取序列的下一个值。例如,在插入记录时,可以...

    Oracle与Sql存储过程的区别[归类].pdf

    Oracle和SQL存储过程是两种不同数据库管理系统中用于创建和执行预编译的SQL语句的程序单元。在软件开发中,了解这两种存储过程的区别是非常重要的,因为它们在处理数据、性能优化以及数据库管理方面有所不同。 ...

    C# 执行存储过程,自动产生序列号,反回数据集,反回OUTPUT参数

    然后创建SqlCommand对象,设置其CommandType为StoredProcedure,并指定存储过程的名称。最后,通过SqlCommand对象的ExecuteReader、ExecuteNonQuery或ExecuteScalar方法来执行存储过程。例如: ```csharp using ...

    Oracle存储过程和触发器实例

    总结来说,Oracle的存储过程和触发器提供了强大的数据库编程能力,使得我们可以创建复杂的数据处理逻辑。同时,序列用于生成唯一的ID,游标用于处理结果集,而包则帮助我们组织和管理这些元素,提高了代码的可维护性...

    在MySQL中创建实现自增的序列(Sequence)的教程

    然而,MySQL自身并不直接支持Sequence,但可以通过创建表和存储过程来模拟这个功能。本教程将详细解释如何在MySQL中创建自增序列,并通过两个实例展示其用法。 首先,我们需要创建一个名为`sequence`的管理表,用于...

    Oracle存储过程实例[定义].pdf

    Oracle存储过程是数据库中的一个重要组成部分,主要用于执行复杂的业务逻辑和数据处理任务。在Oracle中,存储过程是由一系列SQL和PL/SQL语句组成的可重用代码段,可以在数据库服务器端执行,提高了应用程序的性能和...

    Oracle存储过程 知识点总结

    Oracle存储过程是数据库管理系统Oracle中的一个重要特性,它允许程序员将一系列SQL语句和控制结构打包在一起,形成一个可重用的单元,以提高数据库操作的效率和便捷性。以下是对Oracle存储过程的一些关键知识点的...

    Sequence-Databases:用于创建和存储蛋白质 DNA 序列数据库的存储库

    "Sequence-Databases"是一个专门为此目的设计的存储库,它采用Python语言进行开发,这使得数据处理更加高效且易于实现。 1. **序列数据库的用途**: - 生物学研究:科学家可以使用序列数据库来查找特定基因或...

    演示Sequence容器vector

    插入元素到`vector`中时,如果当前容量不足,`vector`会自动进行内存重新分配以满足需求,这个过程称为动态扩展。删除元素时,`vector`可能会进行元素的移动来保持连续性。 接下来,我们来看看`list`。`list`是一个...

    ETL通用解决方案_oracle+存储过程实现.doc

    在“ETL通用解决方案_oracle+存储过程实现”中,主要探讨了如何利用Oracle数据库和存储过程来实现这一过程。以下是该方案涉及的主要知识点: 1. **数据规格化**:这是数据处理的第一步,确保数据的一致性和标准化,...

    oracle数据库对象

    - 创建和运行新存储过程:实验中展示了如何创建新的存储过程并执行,以验证其功能。 3. 触发器(Trigger) - 创建触发器:使用`CREATE TRIGGER`语句定义在特定事件(如INSERT、UPDATE、DELETE)发生时自动执行的...

Global site tag (gtag.js) - Google Analytics