在sql中返回插入的记录的id
作者:亮亮 来源:亮亮博客 发布时间:2008-12-21 15:54:00
标签:存储过程,id,sql,数据库
若数据库是sql server,我以前为了返回插入记录的id,一般是用下面的存储过程:
程序代码
create procedure backId2
@t_txt1_v nvarchar(50),
@id int output
as
insert into testTbl(t_txt1) values(@t_txt1_v)
select @id=@@IDENTITY
go
可有一次却出现了问题,返回的结果老不正确,于是查了一下资料,用下面的存储过程是最保险的:
程序代码
create procedure backId1
@t_txt1_v nvarchar(50),
@id int output
as
insert into testTbl(t_txt1) values(@t_txt1_v)
select @id=SCOPE_IDENTITY()
go
为什么这么说呢?看查到的资料如下解释:
@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。
SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值。
例如,有两个表 a1 和 a2,在 a1上定义了一个 Insert 触发器。当将某行插入 a1 时,触发器被激发,并在 a2 中插入一行。此例说明了两个作用域:一个是在 a1上的插入,另一个是作为触发器的结果在 a2上的插入,假设a1和a2 都有 IDENTITY 列。
@@IDENTITY 返回插入到当前会话中任何作用域内的最后一个 IDENTITY 列值,该值是插入a2中的值。
SCOPE_IDENTITY() 返回插入 a1 中的 IDENTITY 值,该值是发生在相同作用域中的最后一个 Insert。如果在作用域中发生插入语句到标识列之前唤醒调用 SCOPE_IDENTITY() 函数,则该函数将返回 NULL 值。
最后说说怎么调用存储过程吧!
程序代码
connstr=""
set conn=server.CreateObject("adodb.connection")
conn.open connstr
set cmd=server.CreateObject("adodb.command")
cmd.activeconnection=conn
cmd.commandtype=4
cmd.commandtext="backId1"
cmd.parameters.item("@t_txt1_v").value="procedure test"
cmd.execute
'maxId就是返回的id
maxId=cmd.parameters.item("@id").value
set cmd=nothing
conn.close
set conn=nothing
0
投稿
猜你喜欢
- 介绍当创建一个应用程序时,通常希望能够告诉你的应用程序如何做某事。有两种流行的方法来完成这项任务,你可以让应用程序接受命令行参数,或者创建一
- 介绍RANGE分区基于一个给定的连续区间范围,早期版本RANGE主要是基于整数的分区。在5.7版本中DATE、DATETIME列也可以使用R
- 目录openpyxl介绍openpyxl安装openpyxl基本概念openpyxl对excel进行操作新建excel打开已存在的文件读取单
- 本文实例为大家分享了python3实现基于用户协同过滤的具体代码,供大家参考,具体内容如下废话不多说,直接看代码。#!/usr/bin/py
- 本篇文章主要内容代理类主要功能是将一个类实例的属性访问和控制代理到代码内部另外一个实例类,将想对外公布的属性的访问和控制权交给代理类来操作,
- [root@vm1 ~]# rpm -ivh groundwork-foundation-pro-1.6.1-67.noarch.rpm P
- window.onload=function{} 表示页面加载完了后(包括dom和js),再执行函数里面的内容; $(function(){
- cvtColor函数这个函数有两个参数1,src 要进行变换的原图像2,code 转换代码标识例子:import cv2image=cv2.
- 滑动验证码介绍本篇涉及到的验证码为滑动验证码,不同于极验证,本验证码难度略低,需要的将滑块拖动到矩形区域右侧即可完成。这类验证码不常见了,官
- 本篇阅读的代码实现了将输入的数字转化成一个列表,输入数字中的每一位按照从左到右的顺序成为列表中的一项。本篇阅读的代码片段来自于30-seco
- (一) 常用的CSS命名规则:头:header内容:content/container尾:footer导航:nav侧栏:sidebar栏目:
- 本文实例讲述了Python实现判断一个整数是否为回文数算法。分享给大家供大家参考,具体如下:第一个思路是先将整数转换为字符串,再将字符串翻转
- SocketServer简化了网络服务器的编写。它有4个类:TCPServer,UDPServer,UnixStreamServer,Uni
- 列表生成式可以使用列表生成式生成 列表元素。例如:列表还支持 if … else 与 for 循环组合的单行表达式进行
- 【OpenCV】 ⚠️高手勿入! 半小时学会基本操作 ⚠️ 直线检测概述OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大.
- 本周SELECT b.item,IFNULL(a.COUNT,0) AS VALUEFROM ( SEL
- 我为 Compose 写了一个波浪效果的进度加载库,API 的设计上符合 Compose 的开发规范,使用非常简便。1. 使用方式在 roo
- 本文实例为大家分享了Python实现学生信息管理系统的具体代码,供大家参考,具体内容如下要求描述:学生的信息包括:学号,姓名,年龄,性别,出
- 如果我们希望把一个网站的更新实时发布到另一个网站上,最好的方法是通过 RSS 进行转载。如果只是需要简单的对更新的条目做个提示的话,使用 J
- andom.sample(list, n)即是从list中随机选取n个不同的元素# -*- coding: utf-8 -*- import