SQL Server 中,可以使用 SCOPE_IDENTITY()、 @@IDENTITY 、 IDENT_CURRENT() 来取得最后插入记录的值值,它们的区别在于:
SCOPE_IDENTITY() 返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块--存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。
@@IDENTITY 返回在当前会话的所有表中生成的最后一个标识值
IDENT_CURRENT() 返回为任何会话和任何作用域中的指定表最后生成的标识值
CREATE PROCEDURE [dbo].[prInsertCustomArea]
@AreaName NVARCHAR(50),
@userid INT,
@corpid INT,
@AreaWebLatlon VARCHAR(4000),
@Remark NVARCHAR(50),
@CenterWebLatLon nvarchar(50),
@CenterLatLon nvarchar(50),
@ImageUrl nvarchar(100),
@AreaWidth float,
@AreaHigh float,
@Acreage float,
@minLat numeric(9, 6),
@minLon numeric(9, 6),
@MaxLat numeric(9, 6),
@MaxLon numeric(9, 6),
@AreaLatLon varchar(5000),
@O_RETURN int output --声明Out参数
AS
BEGIN
Declare @ID int;
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
INSERT INTO customArea(AreaName,userid,corpid,AreaLatlon,AreaWebLatlon,Remark,
CenterWebLatLon,CenterLatLon,ImageUrl,AreaWidth,AreaHigh,Acreage)
VALUES(@AreaName,@userid,@corpid,'',@AreaWebLatlon,@Remark,
@CenterWebLatLon,@CenterLatLon,@ImageUrl,@AreaWidth,@AreaHigh,@Acreage)
select @ID = IDENT_CURRENT('customArea');--需要传递表名
INSERT INTO CustomAreaLatLon(minLat,minLon,MaxLat,MaxLon,InputTime,AreaID,AreaLatLon)
VALUES(@minLat,@minLon,@MaxLat,@MaxLon,GetDate(),@ID,@AreaLatLon);
set @O_RETURN = @@error--给Out参数赋值
--@@error 表示执行存储过程返回的错误代码,0代表成功,否则,返回错误代码;
END
相关推荐
数据库自增列主键在数据库还原时百分百会出问题 为解决该问题特开发自定义式的主键 创建一个监控表,一个被调用的存储过程即可,推荐有存储过程编广泛使用的程序使用 调用方法 DECLARE @PKID CHAR(12)='' EXEC [dbo]....
获取插入数据的ID,收集起来,以方便使用!
SQLServer考试题及答案 选择题: 1、在MS SQL Server中,用来显示数据库信息的系统存储过程是( ) A sp_ dbhelp B sp_ db C sp_ help D sp_ helpdb 2、SQL语言中,删除一个表的命令是( ) A DELETE B DROP C ...
9.2.2 SQLServer中访问数据的方式 9.3 创建、修改和删除索引 9.3.1 CREATEINDEX语句 9.3.2 创建XML索引 9.3.3 随约束创建的隐含索引 9.3.4 在稀疏列和地理空间列上创建索引 9.4 明智地选择——在何时何地使用何种...
set @SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'') end return end select * from dbo.f_splitstr('1,2,3,4',',') --全角和半角转换函数 Create FUNCTION f_Convert( @str ...
这是SQL Server2000测试题。 1 有订单表,需要实现它的编号,格式如下:200211030001……200222039999等 Replace(substring(convert(varchar(20),getdate(),120),1,10),’-’,’ ‘)+max(订单号)+1 2 有表T1,T2,...
本书重点阐述了SQL Server 2005的基础知识,前半部分以建立一个金融数据库系统为主线,从最基础的收集信息入手,一步步地引导读者学会如何保证数据库的安全,创建表、主键、索引等项目,在表之间建立恰当的关系,并...
SELECT SCOPE_IDENTITY() 获取SQL-SERVER数据库insert into操作的主键返回值,SCOPE_IDENTITY 插入一条记录后想要立刻获取其数据表中的主键返回值。这个主键是自动生成的,其实实现的方式有很多,比如再进行一次查询...
在往数据库表中添加一行的时候,要针对... 代码如下:SET IDENTITY_INSERT [Recursive] ON INSERT INTO [Recursive](id,text) VALUES(3,’c’) SET IDENTITY_INSERT [Recursive] OFF 通常我们在导入数据的时候会用
1、把主键定义为自动增长标识符类型MySql在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如: 代码如下:create table customers(id int auto_increment primary key not null, name...
在sqlserver 中插入数据时,如何返回自增的主键ID,方式有很多,这里提供一种。 代码如下: USE tempdb go CREATE TABLE table1 ( id INT, employee VARCHAR(32) ) go INSERT INTO table1 VALUES(1, 'one') ...
9.2.2 SQLServer中访问数据的方式 9.3 创建、修改和删除索引 9.3.1 CREATEINDEX语句 9.3.2 创建XML索引 9.3.3 随约束创建的隐含索引 9.3.4 在稀疏列和地理空间列上创建索引 9.4 明智地选择——在何时何地使用何种...
9.2.2 SQLServer中访问数据的方式 9.3 创建、修改和删除索引 9.3.1 CREATEINDEX语句 9.3.2 创建XML索引 9.3.3 随约束创建的隐含索引 9.3.4 在稀疏列和地理空间列上创建索引 9.4 明智地选择——在何时何地使用何种...
SQLServer数据库设计规范 作者:佚名 厚朴教育来源:网络 点击数:1446 更新时间:2008-12-2 1 相关的设计规范: 1.1 采用有意义的字段名 尽可能地把字段描述的清楚些。当然,也别做过头了,比如...
Set @Sql='Insert into Users Values(''jilongliang'',''123456'',''广东阳春'')' Exec (@Sql) set @n=@n+1 End End ------------查询一下是不是插入--------------- Select *from Users; ---------...
1. create.text包含创建5个数据库表(包括定义所有主键和外键约束)的SQL语句。 2. populate.txt包含用来填充这些表的SQL INSERT语句。 这些文件中的SQL语句依赖于具体的DBMS,因此应该执行适合于你的DBMS的那个。...
2)有主键相同,但是数据不同的数据,进行更新处理(返回值:2); 3)没有数据,进行插入数据处理(返回值:1)。 【创建存储过程】 Create proc Insert_Update @Id varchar(20), @Name varchar(20), @...
这篇文章我想谈下SQL Server如何在变长列上存储索引。首先我们创建一个包含变长列的表,在上面定义主键,即在上面定义了聚集索引,然后往里面插入80000条记录: 1 — Create a new table 2 CREATE TABLE Customers...
期末考试《SQL server数据库应用技术》A卷 注意事项:本试卷适用于2009级 专业学生使用 题号 一 二 三 四 五 总分 核分人 得分 得分 评卷人 一、填空题(每空1分,共20分) _______________,简称...