SQL Server存储过程-返回插入行的varchar id
我正在处理一个级联插入,其中存储过程应该返回插入行的id。如果表的id是int,这不会是问题。但是,id是SQL Server存储过程-返回插入行的varchar id,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我正在处理一个级联插入,其中存储过程应该返回插入行的id。如果表的id是int,这不会是问题。但是,id是varchar,因此我不能使用SCOPE\u IDENTITY() 这是我目前的程序: CREATE PROCEDURE NEW_ARTICLE @id varchar(50) OUTPUT, @name varchar(100), @articleNr varchar(50), @gategory varchar(50), @containerId varc
varchar
,因此我不能使用SCOPE\u IDENTITY()
这是我目前的程序:
CREATE PROCEDURE NEW_ARTICLE
@id varchar(50) OUTPUT,
@name varchar(100),
@articleNr varchar(50),
@gategory varchar(50),
@containerId varchar(50),
@contPerContainer int,
@pictureId varchar(50)
AS
SET NOCOUNT OFF
INSERT INTO nextlabel.[Article] (name, article_nr, category, container_id, count_per_container, picture_id )
VALUES (@name, @articleNr, @gategory, @containerId, @contPerContainer, @pictureId)
SET @id = SCOPE_IDENTITY()
其中最后一行不正确,因为列id
是varchar
如何返回id
?请尝试以下操作:
CREATE PROCEDURE NEW_ARTICLE
@id varchar(50) OUTPUT,
@name varchar(100),
@articleNr varchar(50),
@gategory varchar(50),
@containerId varchar(50),
@contPerContainer int,
@pictureId varchar(50)
AS
SET NOCOUNT OFF
SET @id = newid()
INSERT INTO nextlabel.[Article] (id, name, article_nr, category, container_id, count_per_container, picture_id)
VALUES (@id, @name, @articleNr, @gategory, @containerId, @contPerContainer, @pictureId)
GO
试试这个:
CREATE PROCEDURE NEW_ARTICLE
@id varchar(50) OUTPUT,
@name varchar(100),
@articleNr varchar(50),
@gategory varchar(50),
@containerId varchar(50),
@contPerContainer int,
@pictureId varchar(50)
AS
SET NOCOUNT OFF
SET @id = newid()
INSERT INTO nextlabel.[Article] (id, name, article_nr, category, container_id, count_per_container, picture_id)
VALUES (@id, @name, @articleNr, @gategory, @containerId, @contPerContainer, @pictureId)
GO
试试这个:
CREATE PROCEDURE NEW_ARTICLE
@id varchar(50) OUTPUT,
@name varchar(100),
@articleNr varchar(50),
@gategory varchar(50),
@containerId varchar(50),
@contPerContainer int,
@pictureId varchar(50)
AS
SET NOCOUNT OFF
SET @id = newid()
INSERT INTO nextlabel.[Article] (id, name, article_nr, category, container_id, count_per_container, picture_id)
VALUES (@id, @name, @articleNr, @gategory, @containerId, @contPerContainer, @pictureId)
GO
试试这个:
CREATE PROCEDURE NEW_ARTICLE
@id varchar(50) OUTPUT,
@name varchar(100),
@articleNr varchar(50),
@gategory varchar(50),
@containerId varchar(50),
@contPerContainer int,
@pictureId varchar(50)
AS
SET NOCOUNT OFF
SET @id = newid()
INSERT INTO nextlabel.[Article] (id, name, article_nr, category, container_id, count_per_container, picture_id)
VALUES (@id, @name, @articleNr, @gategory, @containerId, @contPerContainer, @pictureId)
GO
您想将哪个值设置为@id?在nextlabel.[Article]表中,列名为“id”,是一个varchar。它不是插入的,它是一个自动生成的GUID(作为varchar)。请用您正在使用的特定RDBMS标记您的问题。一些细节在SQL实现之间有所不同,如果我们知道它是什么,您会得到最好的答案。您希望将哪个值设置为@id?在nextlabel.[Article]表中,列名为“id”,是一个varchar。它不是插入的,它是一个自动生成的GUID(作为varchar)。请用您正在使用的特定RDBMS标记您的问题。一些细节在SQL实现之间有所不同,如果我们知道它是什么,您会得到最好的答案。您希望将哪个值设置为@id?在nextlabel.[Article]表中,列名为“id”,是一个varchar。它不是插入的,它是一个自动生成的GUID(作为varchar)。请用您正在使用的特定RDBMS标记您的问题。一些细节在SQL实现之间有所不同,如果我们知道它是什么,您会得到最好的答案。您希望将哪个值设置为@id?在nextlabel.[Article]表中,列名为“id”,是一个varchar。它不是插入的,它是一个自动生成的GUID(作为varchar)。请用您正在使用的特定RDBMS标记您的问题。一些细节在不同的SQL实现中有所不同,如果我们知道它是什么,您将得到最好的答案。这非常有效。你的男人!谢谢。另一个问题:围棋真的有必要吗?它有什么作用?(我不熟悉处理过程)。这是SSMS中设置的默认批处理分隔符。请参阅,这非常有效。你的男人!谢谢。另一个问题:围棋真的有必要吗?它有什么作用?(我不熟悉处理过程)。这是SSMS中设置的默认批处理分隔符。请参阅,这非常有效。你的男人!谢谢。另一个问题:围棋真的有必要吗?它有什么作用?(我不熟悉处理过程)。这是SSMS中设置的默认批处理分隔符。请参阅,这非常有效。你的男人!谢谢。另一个问题:围棋真的有必要吗?它有什么作用?(我不熟悉处理过程)。它是在SSMS中设置的默认批处理分隔符。请参阅和