假如有一个表New(A int, B nchar(10)),其中A字段是自动标识的,我写一个Insert的存储过程:
CREATE PROCEDURE InsertOne ( @B nchar(10))
AS
BEGIN
INSERT INTO New(B)
VALUES(@B);
END
GO
因为A列是自动标识的,我在插入新列的时候不用考虑它的值,但是现在我想让这个存储过程返回插入行的A列,应该怎么做呢?
------解决方案--------------------
Create Table New(A int Identity(1, 1), B nchar(10))
GO
CREATE PROCEDURE InsertOne ( @B nchar(10), @A Int Output)
AS
BEGIN
INSERT INTO New(B)
VALUES(@B);
Select @A = @@IDENTITY
END
GO
Declare @A Int
EXEC InsertOne 'New ', @A Output
Select @A As A
GO
Drop Table New
Drop PROCEDURE InsertOne
--Result
/*
A
1
*/
------解决方案--------------------
两个@ --全局变量
不能创建全局变量,系统中的全局变量一共33个。