很多人都知道在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
分享到:
相关推荐
创建Sequence时,你可以指定初始值、增长步长、是否循环等属性。例如,创建一个名为`USER_SEQ`的Sequence: ```sql CREATE SEQUENCE USER_SEQ START WITH 1 INCREMENT BY 1 MINVALUE 1 NOMAXVALUE NOCYCLE; ``` 接...
- **创建存储过程**:定义了 `getSequence` 存储过程,它接受一个整型参数 `@maxCount`。在这个过程中: - 定义局部变量 `@maxValue` 来存储当前的序列值。 - 从 `sequencetable` 表中获取当前的最大序列值。 - ...
这篇博客分享的是一个自定义的存储过程,用于批量修改Oracle序列的当前值(CURRENT VALUE)。 首先,我们需要理解Oracle序列的基本结构和操作。序列由CREATE SEQUENCE语句创建,如: ```sql CREATE SEQUENCE seq_...
这个例子展示了如何在C#中创建一个`OracleCommand`对象,设置存储过程的参数,并执行存储过程。注意,调用存储过程时需要指定完整的包名和过程名,如`OPERATE_PRODUCTION.GetPro`。 总之,Oracle的Package提供了一...
### 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;...
### PL/SQL程序设计——存储过程、函数与触发器 #### 概述 PL/SQL是一种专门为Oracle数据库设计的过程化语言,它结合了SQL的数据操纵功能和传统编程语言的流程控制功能,使得开发者能够在数据库环境中编写更为复杂...
在Oracle数据库中,存储过程扮演着重要的角色,它允许开发人员创建复杂的业务逻辑并存储在数据库服务器上。 1. 序列(Sequence) 序列是一种自动增长或减少的数字序列,常用于生成唯一的主键值。`CREATE SEQUENCE`...
作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程: CREATE PROCEDURE GetContactFormalNames AS BEGIN SELECT TOP 10 Title + "" "" + FirstName + "" "" + LastName ...
首先,我们要了解如何在存储过程中使用序列(Sequence)。序列是一种自增或自减的数字生成器,通常用于生成唯一的标识符。在Oracle中,你可以通过`SEQNAME.NEXTVAL`获取序列的下一个值。例如,在插入记录时,可以...
Oracle和SQL存储过程是两种不同数据库管理系统中用于创建和执行预编译的SQL语句的程序单元。在软件开发中,了解这两种存储过程的区别是非常重要的,因为它们在处理数据、性能优化以及数据库管理方面有所不同。 ...
然后创建SqlCommand对象,设置其CommandType为StoredProcedure,并指定存储过程的名称。最后,通过SqlCommand对象的ExecuteReader、ExecuteNonQuery或ExecuteScalar方法来执行存储过程。例如: ```csharp using ...
总结来说,Oracle的存储过程和触发器提供了强大的数据库编程能力,使得我们可以创建复杂的数据处理逻辑。同时,序列用于生成唯一的ID,游标用于处理结果集,而包则帮助我们组织和管理这些元素,提高了代码的可维护性...
然而,MySQL自身并不直接支持Sequence,但可以通过创建表和存储过程来模拟这个功能。本教程将详细解释如何在MySQL中创建自增序列,并通过两个实例展示其用法。 首先,我们需要创建一个名为`sequence`的管理表,用于...
Oracle存储过程是数据库中的一个重要组成部分,主要用于执行复杂的业务逻辑和数据处理任务。在Oracle中,存储过程是由一系列SQL和PL/SQL语句组成的可重用代码段,可以在数据库服务器端执行,提高了应用程序的性能和...
Oracle存储过程是数据库管理系统Oracle中的一个重要特性,它允许程序员将一系列SQL语句和控制结构打包在一起,形成一个可重用的单元,以提高数据库操作的效率和便捷性。以下是对Oracle存储过程的一些关键知识点的...
"Sequence-Databases"是一个专门为此目的设计的存储库,它采用Python语言进行开发,这使得数据处理更加高效且易于实现。 1. **序列数据库的用途**: - 生物学研究:科学家可以使用序列数据库来查找特定基因或...
插入元素到`vector`中时,如果当前容量不足,`vector`会自动进行内存重新分配以满足需求,这个过程称为动态扩展。删除元素时,`vector`可能会进行元素的移动来保持连续性。 接下来,我们来看看`list`。`list`是一个...
在“ETL通用解决方案_oracle+存储过程实现”中,主要探讨了如何利用Oracle数据库和存储过程来实现这一过程。以下是该方案涉及的主要知识点: 1. **数据规格化**:这是数据处理的第一步,确保数据的一致性和标准化,...
- 创建和运行新存储过程:实验中展示了如何创建新的存储过程并执行,以验证其功能。 3. 触发器(Trigger) - 创建触发器:使用`CREATE TRIGGER`语句定义在特定事件(如INSERT、UPDATE、DELETE)发生时自动执行的...