Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Das Verketten von nvarchar(max)-Werten scheint nicht zu funktionieren (+=arbeitet als =)

Der Operator +=gilt nur für numerische Datentypen in SQL Server. Microsoft-Dokumentation hier

Für die Zeichenfolgenverkettung müssen Sie die Zuweisung und die Verkettung separat schreiben.

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;

Wenn Sie diese Abfrage in Management Studio ausführen, denken Sie außerdem daran, dass die Größe der zurückgegebenen Daten begrenzt ist (einschließlich in einer Druckanweisung). Wenn also die Definitionen Ihrer Module diese Grenze überschreiten, werden sie in der Ausgabe abgeschnitten.