2014-03-12 21 views
1

我需要上次插入的行GUID在ASP.NET頁面加載時。我試圖用一個存儲過程,但在插入時我正如何使用該值的頁面加載程序是這樣的:檢索上次插入的GUID

USE [emp] 
GO 
/****** Object: StoredProcedure [dbo].[procTestTableInsert] Script Date: 3/12/2014 5:55:33 PM ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROCEDURE [dbo].[procTestTableInsert] 
(
    @name varchar(50) 
) 
AS 
    DECLARE @id uniqueidentifier 

SELECT @id = NEWID()-- Get a new unique identifier to insert 

INSERT 
    testTable1(id,name) 
VALUES 
    (@id,@name) 

SELECT @id 

exec procTestTableInsert sree 
+0

在存儲過程代碼的周圍缺少'BEGIN'和'END'? –

+2

爲什麼你需要查詢以獲取最後一個GUID插入,當你已經在你的proc中?你能不能把它傳回給調用應用程序? – JiggsJedi

+0

@PeterMortensen:爲什麼包含到維基百科的鏈接。已經有標記維基的標籤。 –

回答

0

根據這個問題Best way to get identity of inserted row?你應該能夠查詢IDENT_CURRENT

從MSDN文檔:

A.返回在指定的表 以下示例返回在AdventureWorks2012數據庫Person.Address表生成的最後一個標識值所產生的最後一個標識值。

USE AdventureWorks2012; 
GO 
SELECT IDENT_CURRENT ('Person.Address') AS Current_Identity; 
GO 

注意:這假定您的GUID是行ID。如果它不是行ID,這將無法正常工作。在這種情況下,我建議將最後一個ID存儲在臨時表中的SQL中(更新存儲的proc以保存guid)或讓應用程序緩存它。