Хранимая процедура. Линейное уравнение - MySQL
Формулировка задачи:
Здравствуйте, подскажите, пожалуйста, как правильно написать решение линейного уравнения вида ax=b с помощью хранимой процедуры? Мне не совсем понятно, как задать несколько условий в хранимой процедуре Например при ненулевых значениях a и b решением является x=b/a.
Это как-то так должно выглядеть?
Вот, к примеру, квадратное уравнение, вроде работает, но там нужно было указать условие только для переменной D, а не для нескольких переменных сразу:
IF A!=0 AND B!=0 THEN
BEGIN
Set X:=B/A;
END;DELIMITER //
CREATE PROCEDURE KvUr (A real, B real,C real,Out X1 real, Out X2 real)
BEGIN
DECLARE D real;
Set D:=B*B-4*A*C;
IF D>=0 THEN
BEGIN
Set D:=Sqrt(D);
Set X1:=(-B+D)/(2*A);
Set X2:=(-B-D)/(2*A);
END;
ELSE
Select 'D<0';
END IF;
END //Решение задачи: «Хранимая процедура. Линейное уравнение»
textual
Листинг программы
delimiter // drop procedure if exists t// create procedure t(in A int,B int, out X int) begin IF A!=0 AND B!=0 THEN set X =B/A; else set X = '12'; end if; end // delimiter ; set @A = 3; set @B = 15; SEt @X = ''; call t(@A,@B,@X); select @X;
Объяснение кода листинга программы
- Устанавливаем делегирутор для оператора
delimiter-// - Удаляем процедуру с именем
t, если она существует - Создаем хранимую процедуру с именем
t, которая принимает два аргумента типаint-AиB, и возвращает результат в переменнуюX - Если
AиBне равны нулю, то присваиваемXрезультат деленияBнаA - Если
AилиBравны нулю, то присваиваемXстроку'12' - Закрываем блок
IF - Закрываем блок
BEGIN - Устанавливаем делегирутор для оператора
delimiterна значение по умолчанию -; - Устанавливаем значение переменной
@Aравным3 - Устанавливаем значение переменной
@Bравным15 - Устанавливаем значение переменной
@Xравным пустой строке - Вызываем процедуру
tс аргументами@Aи@B, и присваиваем результат в переменную@X - Выводим значение переменной
@X