Сиквенсы - это генераторы возрастающей последовательности уникальных целых чисел.
Создадим сиквенс:
CREATE SEQUENCE KK_SEQ
MINVALUE 1
MAXVALUE 9999999999999999999999999999
START WITH 1
INCREMENT BY 1
CACHE 20;
Из сиквенса можно выбирать следующее и текущее значение:
SELECT KK_SEQ.NEXTVAL FROM DUAL;
SELECT KK_SEQ.CURRVAL FROM DUAL;
Создадим тестовую таблицу:
CREATE TABLE KK_TAB(ID INTEGER, VAL INTEGER);
Случайное число от 0 до 1 можно выбирать с помощью функции DBMS_RANDOM.VALUE():
SELECT DBMS_RANDOM.VALUE() FROM DUAL;
Этот блок решает задачу:
DECLARE
I INTEGER;
BEGIN
FOR I IN 1 .. 100 LOOP
INSERT INTO KK_TAB (ID, VAL)
VALUES
(kk_seq.NEXTVAL, TRUNC(1000 * DBMS_RANDOM.VALUE()));
END LOOP;
END;
Проверим результат:
SELECT * FROM KK_TAB;
Для генерации случайной строки существует функция dbms_random, первый параметр которой – это опция из списка
'a','A' alpha characters only (mixed case)
'l','L' lower case alpha characters only
'p','P' any printable characters
'u','U' upper case alpha characters only
'x','X' any alpha-numeric characters (upper),
а второй параметр – длина итоговой строки.
Можно уведеть примеры результатов ее работы с помощью запроса:
select dbms_random.string('a', 5),
dbms_random.string('l', 6),
dbms_random.string('p', 7),
dbms_random.string('u', 8),
dbms_random.string('x', 9)
from dual;
Задача. Процедура с OUT параметрами. Нотации.
Написать процедуру KK_P с двумя IN параметрами - фамилией и именем, а также 2 OUT параметрами - числом букв 'а' в фамилии и числом букв 'б' в имени (не различать большие и маленькие буквы).