0
我有一個類似的結構:執行內聯存儲過程,類似於UDF?
Company
(
CompanyID
CompanyLastTransactionNo
)
Transaction
(
TransactionID
CompanyID
CompanyTransactionNo
TransactionAmount
)
於是我有做類似的過程:
INSERT INTO Transaction
(CompanyID, CompanyTransactionNo, TransactionAmount)
SELECT
CompanyID,
fn_GetNextCompanyTrancationNo(CompanyID),
TransactionAmount
FROM
LoadingTable
CREATE FUNCTION [dbo].[fn_GetNextCompanyTrancationNo]
(
@CompanyID CHAR(10)
)
RETURNS INT
AS
BEGIN
DECLARE @trxno int
DECLARE @trxnoNew int
SELECT @trxno = CompanyLastTransactionNo
FROM dbo.Company
WHERE ID = @CompanyID;
SET @trxnoNew = @trxno + 1;
UPDATE dbo.Company
SET CompanyLastTransactionNo = @trxnoNew
WHERE CompanyID = @CompanyID;
RETURN @trxno
END
編譯時,我得到:
消息443,級別16,狀態15,程序fns_fn_GetNextCompanyTrancationNo,第19行 函數中副作用運算符'UPDATE'的無效使用。
DUH。完全忘記了這一點。
所以,這裏是我的問題,有沒有辦法使用存儲過程作爲內聯函數,類似於此?也許這是一個糟糕的做法嗎?
我有點卡住了我的桌子,或者我會用一個序列來獲得下一個數字?
你提到序列:你使用SQL Server 2012嗎? – Matt
不,使用2008 R2。是的,我知道序列直到2012年纔可用。但是我應該已經聲明。這是2008R2。 –