你只需要一个+
after EMP_''
,然后将其删除' WTB '
。我还修复了一些空格:
SET @SqlCommand =
'INSERT INTO ' + @DepartmentTable + ' (' + @EmployeeIdColumn + ',' + @EmployeeNameColumn + ')' +
' SELECT ' + @EmployeeIdColumn + ',''EMP_''+' + @EmployeeNameColumn +
' FROM ' + @EmployeeTable + ' WTB '
If you PRINT @SqlCommand
你会得到这样的东西:
INSERT INTO Department (EmpId,EmpName) SELECT EmpId,'EMP_'+EmpName FROM Employee WTB
还有一点要注意:更好地使用报价名称 https://msdn.microsoft.com/en-us/library/ms176114.aspx带有表/列名称。这将有助于避免列中名称中包含空格的情况,例如“员工姓名”:
SET @SqlCommand =
'INSERT INTO ' + QUOTENAME(@DepartmentTable) + '(' + QUOTENAME(@EmployeeIdColumn) + ',' + QUOTENAME(@EmployeeNameColumn) + ')'+
' SELECT ' + QUOTENAME(@EmployeeIdColumn) + ',''EMP_''+' + QUOTENAME(@EmployeeNameColumn) +
' FROM ' + QUOTENAME(@EmployeeTable) + ' WTB '
To get:
INSERT INTO [Department]([EmpId],[EmpName]) SELECT [EmpId],'EMP_'+[EmpName] FROM [Employee] WTB