Я создал хранимую процедуру, которая имеет 2 фильтра в предложении where.Я включил один фильтр и могу получить результаты. Однако, когда я пытаюсь включить второй, процедура не отображает никаких значений.
Пользователь вводит параметр из экрана пользовательского интерфейса и нажимает на кнопку поиска.кнопка.
Экран пользовательского интерфейса:
Emp ID: _____________
Страна: __________
Search button Cancel button
Данные поступают изтаблица «Сотрудник» в базе данных Oracle.
Таблица сотрудников:
Emp_id ---- Имя ----- Номер телефона ------ Страна
1 ---- Джон Смит ---- US-765-234-4567 --- США
2 ---- Сэм Бенигал ----AL-978-346-765 --- Аргентина
3 ---- Марк Тейлор ---- AS-987-3987-857 --- Австралия
4 ----Claire Furner --- CA-85-454-5454 --- Канада
Для второго фильтра мне нужно использовать номер телефона, который содержит данные, начинающиеся с кода страны ('US-765-234-4567 для страны США; AR-978-346-765 для аргентинской страны; AS-987-3987-857 дляr Страна Австралии ... и т. д.) и сопоставьте с входным параметром 'pt_country', чтобы получить результаты.Я использовал функцию Substring в этом сценарии, потому что на основе первых двух символов телефонного номера мне нужно получить результат.
Кроме того, входной параметр "pt_country" может иметь значение или может быть NULL.,
Код:
Procedure search_emp ( pt_id in number,
pt_name in varchar2,
pt_country in varchar2,
empCursor out ref cursor)
as
v_countrycode CHAR(2);
v_count NUMBER;
begin
SELECT count(*) INTO v_count FROM r_country where UPPER(country) = UPPER(pt_country);
IF v_count > 0 THEN
SELECT countrycode INTO v_countrycode FROM r_country where UPPER(country) = UPPER(pt_country);
ELSE NULL;
END IF; -- here, am trying to get the country code from the table for the input parameter 'pt_country' that is passed.
open empCursor for
select e.emp_id,
e.name,
e.phone_number
from employee e
where upper(e.emp_id) = upper(pt_emp_id)
and (UPPER(substr(e.phone_number,1,2)) LIKE UPPER(v_countrycode) or pt_country IS NULL);
--- I'm not sure how to get the results when the User gives a value to the input parameter 'pt_country'.
END;
Пожалуйста, помогите.