Код:
CREATE OR REPLACE FUNCTION STATUS_DESC_SF
(
P_STATUS_ID IN bb_basketstatus.IDSTAGE%type
)
RETURN VARCHAR2 AS
lv_idstage bb_basketstatus.IDSTAGE%type;
BEGIN
select (CASE
WHEN IDSTAGE = 1 THEN
'Order submitted'
WHEN IDSTAGE = 2 THEN
'Accepted, sent to shipping'
WHEN IDSTAGE = 3 THEN
'Back-ordered'
WHEN IDSTAGE = 4 THEN
'Cancelled'
ELSE
'Shipped'
END) STAGE_ID
INTO lv_idstage
from bb_basketstatus
where idbasket = P_STATUS_ID;
RETURN lv_idstage;
END STATUS_DESC_SF;
select idstage, status_desc_sf(idstage) status_desc
from bb_basketstatus
where idbasket = 4;
Вопрос:
Когда покупатель возвращается на веб-сайт, чтобы проверить состояние заказа, отображается информация из таблицы BB_BASKETSTATUS
.Однако в таблице BB_BASKETSTATUS
доступен только код состояния, но не описание статуса.Создайте функцию с именем STATUS_DESC_SF
, которая принимает идентификатор этапа и возвращает описание статуса.Описание идентификаторов этапов приведено в таблице 6-3.Протестируйте функцию в операторе SELECT, который извлекает все строки в таблице BB_BASKETSTATUS
для корзины 4 и отображает идентификатор этапа и его описание.
Story:
Я знаю, что написал сохраненную функциюправильно, потому что, когда он разорван и имеет оператор выбора сам по себе, он работает.Когда я добавляю его в функцию, он не работает.Я попытался переключить параметр и локальную переменную lv_idstage
, это ничего не делает.Я получаю что-то обратно из кода SQL, но описание статуса 1 | (null)
для idstage
и status_desc
.Если вы уже поняли это, не могли бы вы объяснить, как это получает «(ноль)» для меня?Я не уверен, как он это делает.
Спасибо за помощь !!