Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como posso inserir mais de 8000 caracteres em uma coluna VARCHAR(MAX) com ExecuteNonQuery?


REPLICATE retorna o tipo de entrada independentemente da atribuição posterior. É irritante, mas para evitar o truncamento silencioso, tente:
SET @x = REPLICATE(CONVERT(VARCHAR(MAX), 'a'), 10000);

Isso ocorre porque o SQL Server executa o REPLICATE operação antes de considerar o que você está atribuindo ou para quantos caracteres você está tentando expandi-lo. Ele só se preocupa com a expressão de entrada para determinar o que deve retornar e, se a entrada não for do tipo máximo, ele assume que deve caber em 8.000 bytes. Isso é explicado em Manuais Online :