sql >> Database >  >> RDS >> Sqlserver

Hoe kan ik meer dan 8000 tekens invoegen in een VARCHAR(MAX)-kolom met ExecuteNonQuery?

REPLICATE geeft het invoertype terug, ongeacht latere toewijzing. Het is vervelend, maar om stille inkorting te voorkomen, probeer:

SET @x = REPLICATE(CONVERT(VARCHAR(MAX), 'a'), 10000);

Dit komt omdat SQL Server de REPLICATE . uitvoert bewerking voordat het overweegt waaraan u het toewijst of naar hoeveel tekens u het probeert uit te breiden. Het geeft alleen om de invoerexpressie om te bepalen wat het moet retourneren, en als de invoer geen max-type is, neemt het aan dat het bedoeld is om binnen 8.000 bytes te passen. Dit wordt uitgelegd in Online boeken :



  1. Maakt een Postgresql-dump reeksen die beginnen met - of na - de laatste sleutel?

  2. Cursor in procedure die meer waarden retourneert dan query

  3. Meerdere verbindingen met dezelfde verbindingsreeks onder één transactie, verhoogde transactie?

  4. UPPER() Functie in Oracle