У меня есть структура, подобная этому:
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
Недействительное использование производящего сторону оператора 'ОБНОВЛЯЕТ' в функции.
ПОНЯТНОЕ ДЕЛО. Полностью забыл об этом.
Таким образом, вот мой вопрос, есть ли способ использовать Сохраненный Proc в качестве подставляемой функции, similiar к этому? Возможно, это - плохой подход все вместе?
Я отчасти застреваю со столами, которые я имею, или я использовал бы последовательность, чтобы получить следующее число?