Existe uma maneira de executar várias operações usando a WITH
instrução?
Algo como
WITH T AS
(
SELECT * FROM Tbl
)
BEGIN
OPEN P_OUTCURSOR FOR
SELECT * FROM T;
SELECT COUNT(*) INTO P_OUTCOUNT FROM T;
END;
Eu quero selecionar alguns dados e a contagem deles...
Você só pode ter uma declaração após o CTE. Você pode, no entanto, definir CTEs subsequentes com base em um anterior:
Dado que você está tentando contar as linhas e preencher um cursor ref do mesmo conjunto de resultados, pode ser mais apropriado fazer o seguinte:
Finalmente, se a consulta for simples o suficiente, apenas escreva-a uma vez para a contagem e novamente para o cursor. A simplicidade e a legibilidade superam o princípio DRY neste caso.
Não, uma CTE ou
with
cláusula é definida dentro do escopo de uma única declaraçãoÀs vezes você pode fazer mais do que poderia esperar com uma única declaração, por exemplo:
A maneira 'normal' do Oracle de armazenar conjuntos de resultados temporários (se necessário) é usar um GTT:
GLOBAL TEMPORARY
table .