CREATE PROCEDURE [Изменение платы за тариф](@Name_tarif NVARCHAR(50), @new_price INT, @now_price int OUTPUT)
AS
BEGIN
IF(EXISTS(SELECT * FROM [Тарифы всех провайдеров] WHERE [Название тарифа] = @Name_tarif) AND @new_price > 0) BEGIN
UPDATE [Тарифы всех провайдеров] SET [Плата] = @new_price WHERE [Название тарифа] = @Name_tarif ;
SET @now_price = (SELECT [Плата] FROM [Тарифы всех провайдеров] WHERE [Название тарифа] = @Name_tarif);
RETURN 1;
END
ELSE RETURN 0;
END;
DECLARE @RET INT;
DECLARE @NewPrice INT;
EXECUTE @RET = [Изменение платы за тариф] @new_price = 600, @Name_tarif = N'Базовый', @now_price = @NewPrice OUTPUT;
IF(@RET = 1)BEGIN
print N'Процедура прошла успешно. Новая плата за тариф: ' + CAST(@NewPrice as NVARCHAR);
END ELSE IF(@RET = 0) BEGIN
print N'Процедура не прошла успешно';
END;
Выводит 'Процедура не прошла успешно'. Возвращает 0. Почему не возвращает 1?