我有一个类似于这样的结构:
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”。
呃。完全忘记了这一点。
所以这是我的问题,有没有办法使用存储过程作为内联函数,类似于这个?也许这是一个不好的方法?
我有点卡在我的表上,或者我会使用一个序列来获得下一个数字?