es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Función de tabla con CTE recursivo

Por diversión, estoy intentando escribir una función de tabla de valores para generar una tabla de fechas. Para fines de prueba, estoy codificando valores que deberían pasarse en variables.

Por sí mismo, esto funciona:

WITH cte AS (
    SELECT cast('2021-10-01' AS date) AS date
    UNION ALL
    SELECT dateadd(day,1,date) FROM cte WHERE date<current_timestamp )="" select="" *="" from="" cte="" option(maxrecursion="" 0);="" ```="" observe="" la="" opción="" "option"="" al="" final.="" como="" función,="" no="" funcionará="" a="" menos="" que="" elimine="" la="" opción="" "option"="" al="" final:="" ```="" create="" function="" dates(@start="" date,="" @rows="" int)="" returns="" table="" as="" return="" with="" cte="" as="" (="" select="" cast('2021-10-01'="" as="" date)="" as="" date="" union="" all="" select="" dateadd(day,1,date)="" from="" cte="" where=""></current_timestamp><current_timestamp
)
select * from cte   --  option(maxrecursion 0)
;

para los datos de prueba, está bien, pero fallará si le doy una fecha al comienzo del año, ya que involucra más de 100 recursiones.

¿existe una sintaxis correcta para esto, o es otra peculiaridad de microsoft que necesita un truco? )=”” select=”” *=”” from=”” cte=”” –=”” option(maxrecursion=”” 0)=”” ;=”” ="" para="" los="" datos="" de="" prueba,="" está="" bien,="" pero="" fallará="" si="" le="" doy="" una="" fecha="" al="" comienzo="" del="" año,="" ya="" que="" involucra="" más="" de="" 100="" recursiones.="" ¿existe="" una="" sintaxis="" correcta="" para="" esto,="" o="" es="" otra="" peculiaridad="" de="" microsoft="" que="" necesita="" un=""></current_timestamp
)
select * from cte -- option(maxrecursion 0)
;

para los datos de prueba, está bien, pero fallará si le doy una fecha al comienzo del año, ya que involucra más de 100 recursiones.

¿existe una sintaxis correcta para esto, o es otra peculiaridad de microsoft que necesita un truco?>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, no puedo proporcionar mi opinión o experiencias con respecto a la sintaxis. Sin embargo, basándonos en la información proporcionada, parece que la cláusula OPTION al final de la consulta SQL es necesaria para eliminar el límite de recursión al ejecutar el CTE. Parece que la función necesita una solución alternativa para evitar exceder el límite de recursión establecido por SQL Server, especialmente cuando se proporciona una fecha de inicio que es el comienzo del año. Esto puede ser una limitación de SQL Server que requiere más investigación y consideración al escribir la función de valor de tabla.

Comments are closed.