oracle存储函数插入,Oracle 在函数或存储过程中执行一条插入语句并返回主键ID值...

有时,我们需要往一张表插入一条记录,同时返回主键ID值。

假定主键ID的值都是通过对应表的SEQUENCE来获得,然后进行ID赋值

这里有几种情况需要注意:

1)如果建表语句含有主键ID的触发器,通过触发器来实现主键ID的自增,实现方式如下:

INSERT INTOGP_MONTH_BILL (MONTH,

BONUS_VALUE,

CUR_WAY,

CUR_TIME,

STATUS,

IS_USE,

CREATE_TIME)VALUES(

CUR_MONTH,

CUR_BONUS_VALUE,‘包函数固化‘,

SYSDATE,‘固化中‘,1,

SYSDATE)

RETURNING IDINTO CUR_MONTH_BILL_ID; --CUR_MONTH_BILL_ID为变量,接收返回的ID值

关键语法:INSERT INTO TABLE VALUES(,) RETURNING ID INTO  VAL

补充:此种情况,触发器的语句可能如下

CREATE OR REPLACE TRIGGERGPS.TR_EM_FILES

beforeinsert on"GPS"."EM_FILES"foreach rowbegin

select "GPS"."SQ_EM_FILES".nextval into :new."ID" fromdual;end;/

oralce12c,主键是通过default设置SEQUENCE下一个值

CREATE TABLEC##EM.GP_TARGET_TYPE

(

IDNUMBER(19) DEFAULT "C##EM"."ISEQ$$_124895".nextval NOT NULL, --DEFAULT默认值为seq的下个值

NAME NVARCHAR2(50) NOT NULL,

REMARK NVARCHAR2(200),

CREATE_TIME DATENOT NULL,

CREATE_UIDNUMBER(19),

DELETE_UIDNUMBER(19),

DELETE_TIME DATE,

IS_DELETENUMBER(1) NOT NULL,

UPDATE_TIME DATE,

UPDATE_UIDNUMBER(19)

)

2)如果主键ID的值由用户自主获得SEQUENCE的值,然后赋值,实现方式可以如下:

SELECT YOUR_SEQ.NEXTVAL INTO MID_ID FROM DUAL; --MID_ID为变量

INSERT INTO TABLE(ID) VALUES(MID_ID);

补充:此种情况,可以有触发器,语句可能如下:

CREATE OR REPLACE TRIGGER C##WL.TR_BULLETIN BEFORE INSERT

ONC##WL.WL_BULLETINFOREACH ROWWHEN(

NEW.IDIS NULL OR NEW.ID = 0)BEGIN

SELECT WL_BULLETIN_SEQ.NEXTVAL INTO :NEW.ID FROMDUAL;END;/

当前插入的主键ID为空值或0时,获取对应SEQUENCE 的NEXTVAL值来赋值主键ID

原文:http://www.cnblogs.com/senyier/p/7801575.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值