Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

La concaténation des valeurs nvarchar(max) ne semble pas fonctionner (+=fonctionne comme =)

L'opérateur +=s'applique uniquement aux types de données numériques dans SQL Server. Documentation Microsoft ici

Pour la concaténation de chaînes, vous devez écrire l'affectation et la concaténation séparément.

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;

De plus, si vous exécutez cette requête dans Management Studio, gardez à l'esprit qu'il existe une limite à la taille des données qu'elle renverra (y compris dans une instruction d'impression). Ainsi, si les définitions de vos modules dépassent cette limite, elles seront tronquées dans la sortie.