Sql server 如何将上次插入的PK计算varchar(7)字段作为输出
DDL: SP: 我尝试了许多方法来获取inserted.Ad_Regid…的输出,但没有获得,我也尝试了选择Sql server 如何将上次插入的PK计算varchar(7)字段作为输出,sql-server,stored-procedures,output,scope-identity,Sql Server,Stored Procedures,Output,Scope Identity,DDL: SP: 我尝试了许多方法来获取inserted.Ad_Regid…的输出,但没有获得,我也尝试了选择@Ad_Regid=SCOPE_IDENTITY() 谢谢…根据您的选择尝试这三种变体- 1: 2: 3: 您是否尝试过使用全局varaibale@@IDENTITY CREATE PROCEDURE _insertAdminProfile ( @Ad_Fname VARCHAR(25), @Ad_Lname VARCHAR(25), @Ad_Pwd VAR
@Ad_Regid=SCOPE_IDENTITY()
谢谢…根据您的选择尝试这三种变体- 1: 2: 3:
您是否尝试过使用全局varaibale@@IDENTITY
CREATE PROCEDURE _insertAdminProfile
(
@Ad_Fname VARCHAR(25),
@Ad_Lname VARCHAR(25),
@Ad_Pwd VARCHAR(7) OUTPUT
)
AS BEGIN
DECLARE @MyTableVar TABLE (Ad_Pwd VARCHAR(7));
INSERT INTO dbo.Admin_Profile (Ad_Fname, Ad_Lname)
OUTPUT INSERTED.Ad_Regid INTO @MyTableVar
VALUES (@Ad_Fname, @Ad_Lname)
SELECT @Ad_Pwd = Ad_Pwd
FROM @MyTableVar
END
您需要使用
OUTPUT
子句:
CREATE PROCEDURE _insertAdminProfile
(
@Ad_Fname VARCHAR(25),
@Ad_Lname VARCHAR(25),
@ident NUMERIC OUT
)
AS BEGIN
INSERT INTO dbo.Admin_Profile (Ad_Fname, Ad_Lname)
VALUES (@Ad_Fname, @Ad_Lname);
SET @ident = @@IDENTITY;
END
运行insert语句后,表变量@OutputValues
DECLARE @OutputValues TABLE (ID INT, RegID VARCHAR(7))
INSERT INTO dbo.Admin_Profile (Ad_Fname, Ad_Lname)
OUTPUT Inserted.Id, Inserted.Ad_RegId INTO @OutputValues(ID, RegID)
VALUES(@Ad_Fname, @Ad_Lname);
阅读有关的更多信息,我想返回字段计算的varchar字段…而不是identity(int)…它似乎返回整数值…当然!我正在看…谢谢你@Devarti我觉得第二个很完美…我会试试的…再次谢谢你,先生!!可以返回计算的varchar文件的值吗?@Sugu,我非常怀疑
@@IDENTITY
和SCOPE\u IDENTITY()
几乎相等。请发布表的创建脚本。那我也许能帮上忙。
CREATE PROCEDURE _insertAdminProfile
(
@Ad_Fname VARCHAR(25),
@Ad_Lname VARCHAR(25),
@Ad_Pwd VARCHAR(7) OUTPUT
)
AS BEGIN
INSERT INTO dbo.Admin_Profile (Ad_Fname, Ad_Lname)
VALUES (@Ad_Fname, @Ad_Lname)
SELECT @Ad_Pwd = 'R' + RIGHT('200'+CONVERT(VARCHAR(10),SCOPE_IDENTITY(),0), 6)
END
CREATE PROCEDURE _insertAdminProfile
(
@Ad_Fname VARCHAR(25),
@Ad_Lname VARCHAR(25),
@Ad_Pwd VARCHAR(7) OUTPUT
)
AS BEGIN
DECLARE @MyTableVar TABLE (Ad_Pwd VARCHAR(7));
INSERT INTO dbo.Admin_Profile (Ad_Fname, Ad_Lname)
OUTPUT INSERTED.Ad_Regid INTO @MyTableVar
VALUES (@Ad_Fname, @Ad_Lname)
SELECT @Ad_Pwd = Ad_Pwd
FROM @MyTableVar
END
CREATE PROCEDURE _insertAdminProfile
(
@Ad_Fname VARCHAR(25),
@Ad_Lname VARCHAR(25),
@ident NUMERIC OUT
)
AS BEGIN
INSERT INTO dbo.Admin_Profile (Ad_Fname, Ad_Lname)
VALUES (@Ad_Fname, @Ad_Lname);
SET @ident = @@IDENTITY;
END
DECLARE @OutputValues TABLE (ID INT, RegID VARCHAR(7))
INSERT INTO dbo.Admin_Profile (Ad_Fname, Ad_Lname)
OUTPUT Inserted.Id, Inserted.Ad_RegId INTO @OutputValues(ID, RegID)
VALUES(@Ad_Fname, @Ad_Lname);
SELECT ID, RegID FROM @OutputValues