2

我的表結構如下,獲取SQL計算列插入的值

CREATE TABLE tbl_Info 
(
    [SSEID]   BIGINT    NOT NULL IDENTITY(1,1), 
    [ShortenKey] AS ConvertToBase([SSEID]), 
    [Title]   VARCHAR(500)  NULL,  
) 

ConvertToBase功能如下,

CREATE FUNCTION ConvertToBase(@Number BIGINT) 
RETURNS VARCHAR(15) 
AS 
BEGIN 
     // implementation 
END 

我需要在SP INSERT查詢後所產生的[ShortenKey]值。這個怎麼做 ?

回答

4

使用OUTPUT clause

INSERT tbl_Info (Title) 
OUTPUT INSERTED.ShortenKey 
VALUES ('new title') 

注意:如果我正確讀取它,可能無法與計算列一起使用說MSDN。

+0

感謝您的答覆,但這個錯誤...「列inserted.ShortenKey'不能OUTPUT子句中引用,因爲該列定義包含一個子查詢或引用執行用戶或系統的功能數據訪問,默認情況下假定一個函數在沒有模式綁定的情況下執行數據訪問,請考慮從列定義中刪除子查詢或函數或從OUTPUT子句中刪除列。 「 – Sency 2011-06-15 08:23:48

+1

」添加WITH SCHEMABINDING到函數 – gbn 2011-06-15 08:35:29

3

使用SCOPE_IDENTITY來獲得新的身份值。然後查詢新插入的行。

SELECT ShortenKey 
FROM dbo.tbl_Info 
WHERE SSEID = SCOPE_IDENTITY() 
+0

@gbn我的代碼示例返回ShortenKey。我錯過了什麼嗎? – 2011-06-15 13:27:31

1
SELECT ShortenKey 
FROM dbo.tbl_Info 
WHERE SSEID = SCOPE_IDENTITY()