SQL输出语句
请帮我编辑以下SQL Server存储过程使用OUTPUT
语句获取最后插入的行的ID
以便检索它抛出C#代码后面像SQL输出语句
int ID = Convert.ToInt32(insertUser.ExecuteScalar());
存储过程的代码:
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ID INT
INSERT INTO dbo.Registration_Table (StudentName, Email, CourseCode, CourseTitle)
VALUES (@StudentName, @Email, @CourseCode, @CourseTitle)
SELECT 2
END
GO
最后我做到了。如果任何人想通过使用OUTPUT子句的存储过程来使用最后一次插入列的id,请使用以下代码。 SCOPE_IDENTITY()可以由多个用户
AS
BEGIN
SET NOCOUNT ON;
DECLARE @IDs TABLE(ID INT);
INSERT INTO dbo.Registration_Table(StudentName,Email,CourseCode,CourseTitle)
OUTPUT inserted.ID INTO @IDs(ID)
VALUES (@StudentName, @Email, @CourseCode, @CourseTitle)
SELECT ID FROM @IDs;
END
GO
您可以参考您在哪里阅读SCOPE_IDENTITY可能会导致多个用户发生错误?我从来没有任何问题。 –
尼克,请点击此链接https://support.microsoft.com/en-in/help/2019779/you-may-receive-incorrect-values-when-using-scope-identity-and-identit – Mansoor
谢谢发布。所以从SQL 2012开始,这一切都很好 –
程序代码(如存储过程)并行插入是**高度供应商特定期间导致错误** - 所以请添加标签到指定是你使用MySQL的' ','postgresql','sql-server','oracle'或'db2' - 或者其他的东西。 –
我正在使用SQL和.Net,请编辑我的代码 – Mansoor
** SQL **是查询语言 - 但它只是**最** ** RDBMS系统 - 我们真的需要知道哪些** CONCRETE ** RDBMS系统你正在使用 - 甲骨文? SQL Server? DB2? MySQL的? PostgreSQL的? ** SQL **不够清晰... –