Несколько операций с использованием с
Вопрос
Есть ли способ выполнить несколько операций, используя WITH
утверждение?
Что-то типа
WITH T AS
(
SELECT * FROM Tbl
)
BEGIN
OPEN P_OUTCURSOR FOR
SELECT * FROM T;
SELECT COUNT(*) INTO P_OUTCOUNT FROM T;
END;
Я хочу выбрать некоторые данные и его количество ...
Решение
Вы можете иметь только одно утверждение после CTE. Вы можете, однако, определить последующие CTE на основе предыдущего:
WITH t1 AS (
SELECT a, b, c
FROM table1
)
, t2 AS (
SELECT b
FROM t1
WHERE a = 5
)
SELECT *
FROM t2;
Учитывая, что вы пытаетесь подсчитать строки и заполнить курсор рефери с того же набора результатов, может быть более целесообразным сделать одно из следующих действий:
- Создайте представление
- Постановка временных результатов в таблице температуры
Наконец, если запрос достаточно прост, просто напишите его один раз для подсчета и снова для курсора. Простота и читаемость отнимают СУХОЙ Принцип в этом случае.
Другие советы
Нет, CTE или with
пункт определен В рамках одного заявления
Иногда вы можете сделать больше, чем вы могли ожидать с одним заявлением, например:
with w as (select v from t3)
insert all into t1(v) values(v)
into t2(v) values(v)
select v from w;
«Нормальный» способ хранить временные наборы результатов (если вам нужно) - использовать GTT:
GLOBAL TEMPORARY
стол.