2013-01-15 91 views
0

我有一個ID列爲Identity的單個列表。我需要一個函數,可以插入和返回函數調用中新插入的標識。我創建了一個函數,但我們不能在SCALAR函數中使用INSERT。還有什麼可能的解決方案通過標量函數返回標識

+3

需要通過語句/存儲過程的函數是什麼原因? –

+0

SQL Server 2008.不知道SP是否可能是更好的選擇。需要任何好的建議/建議 – InTheWorldOfCodingApplications

+1

你不能在功能上使用DML。 –

回答

2

您可以使用默認函數sql server Scope_Identity()來獲取新插入的標識字段。請參閱鏈接 SCOPE_IDENTITY (Transact-SQL) 瞭解更多詳情。

DECLARE @Identity INT 
INSERT INTO TableName (Column1, Column2,)VALUES(@value1, @value2, ...) 
SET @Identity=Scope_Identity() 

您可以使存儲過程相同。實施例

CREATE PROCEDURE USP_ProcedureName 
(
    @Input1 INT, 
    @Identity INT OUTPUT 
) 
AS 
BEGIN 
    INSERT INTO TableName (Col1) VALUES (@Input1) 
    SET @Identity=Scope_Identity() 
END 
GO 

停止放參數可以通過使用EXEC命令執行存儲過程進行檢索。像

DECLARE @OutVar INT 
EXEC USP_ProcedureName 1, @OutVar OUTPUT 
SELECT @OutVar 
+0

是的,但我想要一個函數/ SP中的這個名稱,以便它可以用名稱/ sp – InTheWorldOfCodingApplications

+0

調用。您可以在SP中執行相同的操作。請檢查編輯的答案。 – TechDo

+0

我想在另一個查詢中使用這個值。我怎麼能這樣做。可以在SQL Insert中將SP作爲參數調用嗎? – InTheWorldOfCodingApplications