Constantes de Tablas o cláusula WITH

Creado por David Miralpeix, Modificado el Fri, 16 Feb 2024 a las 12:24 PM por David Miralpeix

Las constantes de tabla WITH nos permiten preparar resultados en forma de vista que luego se pueden usar en la sentencia inmediatamente posterior. Se pueden definir varias vistas en la misma cláusula WITH, y pueden ser recursivas. Esta cláusula se usa mucho en las funciones in-line. 

Editar el trigger Anticipos_Cli_DTrig para ver un ejemplo de WITH y como sustituye a un cursor.

 

Ejemplo de WITH recursivo para devolver el árbol de familias:

 

;WITH FAM AS                          

(               

-- semilla  

SELECT IdFamilia as IdFam FROM Articulos_Familias WHERE IdFamilia='prueba1'

UNION ALL                               

-- recursion

SELECT AF.IdFamilia FROM FAMINNER JOIN Articulos_Familias AF ON F.IdFam=AF.IdFamiliaPadre             

)                              

SELECT * FROM FAM 

 

Ejemplo de WITH recursivo para devolver el árbol de sustitución de efectos de una determinada factura:

 

Declare @IdFactura int=197910

Declare @IdEfecto int=1

 

 

;WITH LosEfectos(IdFactura,IdEfecto)                                                                                                                                      

AS (

                -- semilla

SELECT IdFactura,IdEfecto FROM Clientes_Efectos_Hist WHERE IdFacturaPadre=@IdFactura AND IdEfectoPadre=@IdEfecto                                         

                UNION ALL                                               

                -- recursion                              

                SELECT CEH.IdFactura,CEH.IdEfecto                                                          

FROM LosEfectos E INNER JOIN Clientes_Efectos_Hist CEH ON E.IdFactura = CEH.IdFacturaPadre AND E.IdEfecto = CEH.IdEfectoPadre                                                                                                                                                                                                                         

)                                                                                                                                             

SELECT * FROM LosEfectos                                                              

 

<< Artículo anterior                                                                                                                                       Siguiente artículo >>

¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo