Есть ли способ поместить функцию в процедуру, а затем вывести результат процедуры в таблицу? - PullRequest
0 голосов
/ 21 июня 2019

Это как заголовок спрашивает Если вам нужно увидеть код, дайте мне знать.

ALTER FUNCTION dbo.Intrest 
    (@loan MONEY, @interest MONEY)
RETURNS INT
AS 
BEGIN
    DECLARE @returnValue INT
    SET @returnValue = (@loan) * (@interest)

    INSERT INTO Loan (Loan_amount, Interest_rate)
    VALUES (@loan, @interest)

    RETURN @returnValue 
END
GO

ALTER PROCEDURE Getoutput 
    (@loanamount MONEY, @interestrate MONEY) 
AS
BEGIN
    DECLARE @loansID INT

    SELECT @loansID = Loan_id 
    FROM Loan
    WHERE  Loan_amount = @loanamount

    SELECT dbo.Intrest (@loanamount, @interestrate) 

    INSERT INTO Loan (Outputs, Loan_amount, Interest_rate)
    VALUES (@loansID, @loanamount, @interestrate)

    RETURN @@identity 
END

1 Ответ

0 голосов
/ 21 июня 2019

Функция не может выполнять какие-либо операции DML над таблицей. Я удалил оператор INSERT

ALTER FUNCTION dbo.Intrest 
    (@loan MONEY, @interest MONEY)
RETURNS INT
AS 
BEGIN
    DECLARE @returnValue INT
    SET @returnValue = (@loan) * (@interest)

    RETURN @returnValue 
END
GO

Переменные не обязательны. Ваш Stored Procedure можно упростить до

ALTER PROCEDURE Getoutput 
    (@loanamount MONEY, @interestrate MONEY) 
AS
BEGIN

    INSERT INTO Loan (Outputs, Loan_amount, Interest_rate)
    SELECT Loan_id, Loan_amount,  dbo.Intrest (Loan_amount, @interestrate) 
    FROM   Loan
    WHERE  Loan_amount = @loanamount

    RETURN @@identity 

END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...