У меня есть функция, которую я хочу работать по-разному в зависимости от пройденного столбца. Я вызываю эту функцию в инструкции UPDATE. Если я передаю столбец A таблицы, тогда должен быть реализован случай 1 функции, и если я передам col B, тогда необходимо рассмотреть часть функции case2.повторное использование функции в оракуле в зависимости от пройденного столбца
Я могу создать две отдельные функции, но я хочу выполнить в одном, если это возможно.
Например:
create or replace Function test(para1 in varchar2)
v_para varchar2;
BEGIN
****If paramater is coming from col A then perform 1st block Else perform 2nd block****
Begin
v_para := REGEXP_REPLACE (para1,'....');
v_para := .....
v_para := .....
Return varchar2
END
------------------------------------------------------
BEGIN
v_para := REGEXP_REPLACE(para1,'.....');
v_para := .....
Return varchar2
END
END;
Вы считали, что передаете второй аргумент, чтобы указать, что делать в функции? –
Это хорошая идея ... Я могу передать второй аргумент как NULL .. В основном создайте функцию с двумя аргументами и когда используется col1, вызов подобен select test (col1, NULL) из double .. Если используется col2, выберите test (NULL, col2) из dual; .. Внутри функции я буду использовать случай, если para1 равен NULL THEN .... Else ..... END –
Я полагаю, что @ GordonLinoff означает передать два аргумента - значение col и строка 'colA'or'colB'.eg В вашем sql перед этой функцией выберите colA как para1, «colA» как para2 из таблицы ... – Gentlezerg