В настоящее время я экспериментирую с хранимыми процедурами, и я пытаюсь реализовать простую инструкцию IF/ELSE. Я использую DB2, и я пытаюсь выбрать все записи, если параметр процедуры имеет значение null, а если параметр не равен null, запросите базу данных.Оператор DB2 хранимой процедуры IF
Мой код хранимой процедуры заключается в следующем:
DROP PROCEDURE [email protected]
CREATE PROCEDURE LWILSON.IFQUERY
(
IN p_type VARCHAR(15)
)
DYNAMIC RESULT SETS 1
LANGUAGE SQL
BEGIN
DECLARE c_result CURSOR WITH RETURN FOR
IF p_type IS NULL
THEN
SELECT * FROM LWILSON."ANIMALS";
OPEN c_result;
ELSE
SELECT ID,TYPE,NAME,WEIGHT, AGE FROM LWILSON."ANIMALS" AS ANIMALRESULTS WHERE ANIMALRESULTS.type = p_type;
OPEN c_result;
END IF;
[email protected]
(я использую символ @ для команды разделителя). Сообщение об ошибке, которое я получаю при попытке выполнить процедуру, является следующим:
Любая помощь приветствуется. Благодарю.
Не думайте, что вы можете использовать 'if .. else' с таким определением Cursor. – Rahul
Вам нужно объявить два курсора и открыть один или другой. – mustaccio
Я попытался объявить еще один курсор ниже указанного. Затем я открыл соответствующий курсор, и он все еще не работает. Любые другие предложения? Благодарю. – LiamWilson94