я написал функцию, которая возвращает 1, если разница дата уже больше или равна 30.Возвращаемое значение не может быть использована в этом контексте
Вот мой код:
DECLARE @flag int
DECLARE @isactive bit
DECLARE @date Datetime
SET @flag = 0
SELECT @isactive = [m_isactive]
FROM dbo.rms_month_email
WHERE m_id = 3
SELECT @date = [m_createddate]
FROM dbo.rms_month_email
WHERE m_id = 3
IF (@isactive = 1 AND DATEDIFF(dd,@date,GETDATE()) = 30)
SET @flag = 1
RETURN @flag
но он сгенерировал эту ошибку:
Msg 178, Level 15, State 1, Line 16
A RETURN statement with a return value cannot be used in this context.
Что это значит?
CREATE FUNCTION [dbo].[udf_isBonus]
(@m_id AS INT)
RETURNS INT
AS
BEGIN
-- Declare the return variable here
DECLARE @flag AS int
DECLARE @isactive AS bit
DECLARE @date AS Datetime
SET @flag = 0
SELECT @isactive = [m_isactive] FROM dbo.rms_month_email WHERE m_id = @m_id
SELECT @date = [m_createddate] FROM dbo.rms_month_email WHERE m_id = @m_id
IF (@isactive = 1 AND DATEDIFF(dd,@date,GETDATE()) = 30)
SET @flag = 1
RETURN @flag
END
GO
Это код для этой функции.
Предоставить всю вашу функцию с 'CREATE FUNCTION Name ...' , Похоже, у вас неправильный синтаксис. –
Здесь я не вижу определения функции. Если вы хотите проверить тело функции в пакете, используйте 'SELECT @ flag' вместо' RETURN'. – Pred
Я не вижу ошибок в этой функции. Голосование за закрытие –