Я следующую таблицу:Возвращаясь несколько значений из функции в оракула
T_TYPE_ID T_TYPE T_TYPE_PRICE T_TYPE_START_DATE T_TYPE_END_DATE
1 student 10.95 01.04.2015 00:00:00 30.06.2015 00:00:00
2 Concession 5.5 01.04.2015 00:00:00 30.06.2015 00:00:00
мне нужно: Создать FUNC_get_ t_type_end_date function
Эта функция должна содержать следующий параметр ввода: t_type_p
и следующие выходные параметры: t_type_price_p
и t_type_end_date_p
. Он должен возвращать 1, если имеет запись с t_type как t_type_p
, в противном случае возвращает 0. Кроме того, в случае наличия записи он должен назначить последние t_type_end_date
на t_type_end_date_p
и на t_type_price_p
. Обратите внимание, что t_type_end_date_p
может быть пустым; это означает, что соответствующая цена в настоящее время действительна.
Я написал следующий код:
CREATE OR REPLACE FUNCTION FUNC_get_t_type_end_date
(t_type_p IN VARCHAR2)
RETURN NUMBER
AS
cnum NUMBER;
CURSOR cr1 IS
SELECT t_type
FROM ticket_type
WHERE t_type = t_type_p;
BEGIN
OPEN cr1;
FETCH cr1 INTO cnum;
IF cr1%NOTFOUND THEN
cnum := 0;
END IF;
CLOSE cr1;
RETURN cnum;
END;
я не получал никакого понятия о том, как вернуть несколько значений из функции. Я использую оракул.
Подсказка:
create or replace FUNCTION FUNC_get_ t_type_end_date (…)
return number
as
-- define a variable to return a number and assign 0 to it
-- define a cursor to obtain t_type_price, t_type_end_date of the given t_type_p. The t_type_end_date values should be sorted in descending order – to do so the first record will contain either null or the latest of t_type_end_date
BEGIN
-- open cursor
-- fetch the first record from the cursor to t_type_price_p and t_type_end_date_p
-- if (having a record) then …
-- close cursor
RETURN …
END;
может быть вместо функции, вы можете использовать процедуру с параметрами 'out' –
Ненавидите это префикс имени, которое вы там делаете. Это много лишних персонажей, которым все приходится набирать. –
О, также, что явная методология курсора медленная, сложнее писать, сложнее поддерживать и, следовательно, больше подвержена ошибкам. –