none
store dinamico larg0 RRS feed

  • Pregunta

  • hola foro :

    estoy haciendo  sql dinamico a un store pero se queda corto  con nvarchar(MAX) llega hasta  4000 a 6000 caracteres y me queda corta con una query larga. Se ve que tiene un limite , no se puede solucionar? , queiro seguir ejecutando el executesp 


    DECLARE @sql        nvarchar(MAX)                             
      declare @paramlist  nvarchar(4000) 

    -EXEC sp_executesql @sql, @paramlist,                               
    --                  @parametro1,parametro2....

    Gracias



    lunes, 27 de marzo de 2017 2:56

Respuestas

  • Estoy casi seguro que el problema lo tienes al construir el sql mira este ejemplo

    este primero no funciona

    declare @sql nvarchar(max) 
    select @sql=N'/'+replicate(N'*',4000) +N'/ SELECT * FROM INFORMATION_SCHEMA.TABLES ;'
    exec sp_executesql @sql,N''
    

    sin embargo con este pequeño cambio si
    declare @sql nvarchar(max) 
    select @sql=N'/'+replicate(N'*',4000) 
    select @sql=@sql+N'/ SELECT * FROM INFORMATION_SCHEMA.TABLES ;'
    exec sp_executesql @sql,N''
    

    Obviamente no siempre se puede hacer de esta forma, así pues, te sugiero usar cast de forma explícita ya que el casting implícito te lo deja en varchar(4000)

    declare @sql nvarchar(max) 
    select @sql=cast(N'/' as varchar(max))+replicate(N'*',4000) +N'/ SELECT * FROM INFORMATION_SCHEMA.TABLES ;'
    exec sp_executesql @sql,N''
    


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    • Propuesto como respuesta Joyce_ACModerator lunes, 27 de marzo de 2017 16:41
    • Marcado como respuesta Inovador2015 martes, 28 de marzo de 2017 0:43
    lunes, 27 de marzo de 2017 6:20
    Moderador