Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Использование процедур выбора
Разделы на этой странице:
Использование процедур выбора
Процедуры выбора могут быть использованы для виртуального задания любого набора, однако они особенно полезны, когда нужен набор, который не может быть извлечен или его извлечение выполняется медленно или слишком сложно в одном операторе DSQL.
Эзотерические наборы
Техника хранимых процедур выбора предоставляет колоссальную гибкость для извлечения наборов; эта техника превосходит логику, доступную в спецификациях
обычных операторов SELECT. Она делает возможным создавать набор буквально из любой комбинации хранимых у вас данных. Вы можете выполнять вычисления и трансформацию множества столбцов и строк в выходной набор. Например, выходные наборы с промежуточными суммами сложно или невозможно получить из динамического набора, но они могут быть быстро и эффективно сгенерированы с помощью хранимых процедур выбора.
Процедуры выбора могут легко генерировать наборы из данных, которые вообще не хранятся в базе данных. Мы все иногда находим применение этой технике. В следующем тривиальном примере список строк, разделенных запятыми, каждая из которых содержит 20 или менее символов, поступает в качестве входа. Процедура возвращает приложению каждую строку в нумерованном виде:
CREATE PROCEDURE BREAKAPART(
INPUTLIST VARCHAR(1024))
RETURNS (
NUMERO SMALLINT, ITEM VARCHAR (20)
AS
DECLARE CHARAC CHAR;
DECLARE ISDONE SMALLINT = 0;
BEGIN
NUMERO = 0;
ITEM = ' ' ;
WHILE (ISDONE = 0) DO
BEGIN
CHARAC = SUBSTRING (INPUTLI ST FROM 1 FOR 1);
IF (CHARAC = '') THEN
ISDONE = 1;
IF (CHARAC = OR CHARAC = '') THEN
BEGIN
NUMERO = NUMERO + 1;
SUSPEND;
/* Отправляет строку в буфер строк */
ITEM = '';
END
ELSE
ITEM = ITEM || CHARAC;
INPUTLIST = SUBSTRING(INPUTLIST FROM 2);
END
END ^
COMMIT;
/* */
SELECT * FROM BREAKAPART (' ALPHA, BETA, GAMMA, DELTA ') ;
NUMERO ITEM
1 ALPHA
2 BETA
3 GAMMA
4 DELTA
Выигрыш в производительности для сложных наборов
Часто сложные запросы, включающие множество соединений или подзапросов, бывают слишком медленными, чтобы удовлетворить интерактивные приложения. Некоторые запросы могут быть медленными по причине непропорциональности индексов внешних ключей. Поскольку есть возможность оперировать с наборами во внутренних циклах, хранимые процедуры способны создавать требуемые наборы гораздо быстрее и к тому же начинаются возвращать строки раньше, чем позволяют обычные последовательности SQL.
- Хранимые процедуры выбора
- 19.8. Селекторы и методы выбора в библиотеке jQuery
- Выражения выбора
- 2.5. ПРОЕКТНАЯ ПРОЦЕДУРА ПОСТАНОВКИ ЗАДАЧИ РАЗРАБОТКИ ПРОГРАММЫ
- Выполняемые хранимые процедуры
- 19.8.2. Методы выбора
- ГЛАВА 30. Хранимые процедуры.
- Процедуры выбора
- Тестирование процедур
- Восстановление с использованием инструмента gbak
- Повышение производительности приложений с помощью хранимых процедур
- Типы страниц и их использование