Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

La concatenazione dei valori di nvarchar(max) non sembra funzionare (+=funziona come =)

L'operatore +=si applica solo ai tipi di dati numerici in SQL Server. Documentazione Microsoft qui

Per la concatenazione di stringhe, è necessario scrivere l'assegnazione e la concatenazione separatamente.

DECLARE @sql nvarchar(max);
SELECT @sql = N'';
SELECT @sql = @sql + [definition] + N'
GO
'
FROM sys.sql_modules 
WHERE OBJECT_NAME(object_id) LIKE 'dt%'
ORDER BY OBJECT_NAME(object_id);

PRINT @sql;

Inoltre, se si esegue questa query in Management Studio, tenere presente che esiste un limite alla dimensione dei dati che verranno restituiti (incluso in un'istruzione print). Quindi, se le definizioni dei tuoi moduli superano questo limite, verranno troncate nell'output.