Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server存储过程-返回插入行的varchar id_Sql_Sql Server_Stored Procedures - Fatal编程技术网

SQL Server存储过程-返回插入行的varchar 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

我正在处理一个级联插入,其中存储过程应该返回插入行的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 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中设置的默认批处理分隔符。请参阅和