Sql server 如何将上次插入的PK计算varchar(7)字段作为输出

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

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 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