Создадим функцию с параметрами: входной строкой и символом, количество вхождений которого в строке мы ищем.
CREATE OR REPLACE FUNCTION KK_F(IN_STR IN VARCHAR2, IN_CHAR IN CHAR)
RETURN INTEGER IS
RES INTEGER;
BEGIN
RES := 0;
FOR I IN 1 .. LENGTH(IN_STR) LOOP
IF SUBSTR(IN_STR, I, 1) = IN_CHAR THEN
RES := RES + 1;
END IF;
END LOOP;
RETURN RES;
END KK_F;
Создадим основную процедуру. Такой способ вызова процедуры, когда параметры перечислены в том порядке, в каком они указаны в коде процедуры, называется позиционной нотацией:
CREATE OR REPLACE PROCEDURE KK_P(IN_LASTNAME IN VARCHAR2,
Проверим работу процедуры. Такой способ вызова процедуры, когда параметры перечислены в том порядке, в каком они указаны в коде процедуры, называется позиционной нотацией:
declare
n1 integer := 0;
n2 integer := 0;
begin
DBMS_OUTPUT.enable;
kk_p('Анатольев', 'Борис', n1, n2);
DBMS_OUTPUT.put_line('Анатольев Борис ' || n1 || ' ' || n2);
Именованная нотация позволяет переставлять параметры местами и удобно пользоваться значениями параметров по умолчанию. Немного переделаем процедуру, добавив значения параметров по умолчанию:
CREATE OR REPLACE PROCEDURE KK_P(IN_LASTNAME IN VARCHAR2 default 'Растаманов',