3
有許多關於將scope_identity
從子項傳遞給父存儲過程的討論。我有一個相反的場景,在父存儲過程中插入行,並且我想將標識值傳遞給子存儲過程。將scope_identity傳遞給存儲過程
但是,直接將scope_identity傳遞給子過程會在SQL Server Management Studio中生成一個分析錯誤。
create procedure parent
as
begin
-- insert a record
exec child scope_identity() -- this does not work
end
但是,使用局部變量可以解決問題。
create procedure parent
as
begin
-- insert a record
set @id = scope_identity()
exec child @id -- this works
end
什麼原因導致直接通過scope_identity()
作爲輸入參數失敗?
可能的重複[轉換整型和連接到TSQL中的varchar](http://stackoverflow.com/questions/4936180/cast-integer-and-concatenate-to-varchar-in-tsql) –
句法上允許你被允許傳遞一些函數(例如'@@ IDENTITY')。展開此列表[是Connect網站上的打開請求](https://connect.microsoft.com/SQLServer/feedback/details/352110/t-sql-use-scalar-functions-as-stored-procedure-parameters) –
@Martin - 謝謝。這是我第一次瞭解到,經過這麼多年後,我無法將表達作爲參數。我有點震驚。 SQL2012已經出來,但不知道這是否得到改善。 – intangible02