热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SQLSERVER自增字段和Oracle创建自增字段-ORACLESEQUENCE方法的对比-并且用存储过程实现参数输出

SQLSERVER自增字段和Oracle创建自增字段-ORACLESEQUENCE方法的对比并且用存储过程实现带参数输出--SQLSERVER版本的实现

SQLSERVER自增字段和Oracle创建自增字段-ORACLE SEQUENCE方法的对比

并且用存储过程实现 带参数输出

--SQLSERVER版本的实现

CREATE TABLE [dbo].[Accounts_Permissions](
    [PermissionID] [int] IDENTITY(1,1) NOT NULL, --(自增长1 从1开始)
    [Description] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL,
    [CategoryID] [int] NULL
) ON [PRIMARY]

CREATE PROCEDURE [dbo].[sp_Accounts_CreatePermission]
@CategoryID int,
@Description varchar(50)
AS
    INSERT INTO Accounts_Permissions(CategoryID,Description) VALUES(@CategoryID,@Description)
    RETURN @@IDENTITY

---SQLSERVER 直接通过RETURN 返回

DECLARE @return_value int
EXEC @return_value = [dbo].[sp_Accounts_CreatePermission] @CategoryID = 555, @Description = N'测试'
SELECT 'Return Value' = @return_value
GO

--ORACLE版本的 实现

-- 创建表
create table ACCOUNTS_PERMISSIONS
( PERMISSIONID NUMBER(4) not null,
DESCRIPTION VARCHAR2(255),
CATEGORYID NUMBER(4) )
tablespace SYSTEM pctfree 10 pctused 40 initrans 1 maxtrans 255 storage ( initial 64 next 64 minextents 1 maxextents unlimited pctincrease 50 );
--创建序列
create sequence Seq_Accounts_Permissions
minvalue 1 --最小值
maxvalue 9999 --最大值
start with 1 --起始于1
increment by 1 --自增长1
nocache; --不写入CACHE 这个的好处是不会因为数据库当掉二序号中断 坏处是性能没有缓存来的快

/*创建存储过程*/

create or replace procedure sp_Acc_CreatePermission(CategoryID  number,
                                                    Description varchar2,
                                                    outid       out number) is
  id number;
begin
  INSERT INTO Accounts_Permissions
    (PERMISSIONID, CategoryID, Description)
  VALUES
    (Seq_Accounts_Permissions.Nextval, CategoryID, Description);
  commit;
  SELECT Seq_Accounts_Permissions.currval into id FROM DUAL; ---返回当前序列的ID号
  dbms_output.put_line(id);
  outid := id;
end;

CURRVAL=返回 sequence的当前值
NEXTVAL=增加sequence的值,然后返回 sequence 值

调用

declare
  param_out number;
  categoryid  number;
  description1 varchar2(50);
begin
  categoryid :=555;  
  description1:='测试';
   sp_acc_createpermission(categoryid,
                          description1,
                           param_out);
  dbms_output.put_line(param_out);
end;

 

在ORACLE中带返回参数也可以用 函数来操作

create or replace function F_ACC_CREATEPERMISSION(CategoryID  in NUMBER,
                                                  Description in VARCHAR2)
  return number is
  Result number;
begin
  INSERT INTO Accounts_Permissions
    (PERMISSIONID, CategoryID, Description)
  VALUES
    (Seq_Accounts_Permissions.Nextval, CategoryID, Description);
  COMMIT;
  SELECT Seq_Accounts_Permissions.currval into Result FROM DUAL;
  return(Result);
end F_ACC_CREATEPERMISSION;

调用函数

begin
dbms_output.put_line(f_acc_createpermission(555,'XJY'));
end;


推荐阅读
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 本文介绍了在Oracle数据库中创建序列时如何选择cache或nocache参数。cache参数可以提高序列的存取速度,但可能会导致序列丢失;nocache参数可以避免序列丢失,但在高并发访问时可能导致性能问题。文章详细解释了两者的区别和使用场景。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • Java 11相对于Java 8,OptaPlanner性能提升有多大?
    本文通过基准测试比较了Java 11和Java 8对OptaPlanner的性能提升。测试结果表明,在相同的硬件环境下,Java 11相对于Java 8在垃圾回收方面表现更好,从而提升了OptaPlanner的性能。 ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
author-avatar
Federer2012_554
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有