您需要在串联中将所有数字CAST转换为nvarchar。
没有隐式的VBA样式转换为字符串。在SQL Server中,数据类型优先级意味着int高于nvarchar:因此,整个字符串都试图通过CAST转换为int。
SET @SQL = 'SELECT ' + @GName + ' AS GrName ,' + @BR + CAST(@T_ID AS nvarchar(10)) + ' AS To_ID ,' ...
编辑:请问A有一个好点:注意NULL!

您需要在串联中将所有数字CAST转换为nvarchar。
没有隐式的VBA样式转换为字符串。在SQL Server中,数据类型优先级意味着int高于nvarchar:因此,整个字符串都试图通过CAST转换为int。
SET @SQL = 'SELECT ' + @GName + ' AS GrName ,' + @BR + CAST(@T_ID AS nvarchar(10)) + ' AS To_ID ,' ...
编辑:请问A有一个好点:注意NULL!