Вы получаете эту ошибку, потому что вы пытаетесь установить значение локальной переменной в значение из динамического SQL.Поэтому, когда вы распечатываете этот текст SQL, он выглядит примерно так:
SELECT = concat…
Вы должны сделать это, используя выходные параметры с sp_executesql.Примерно так:
DECLARE @SQL nvarchar(max)
DECLARE @ParamDef nvarchar(200)
DECLARE @INP_ITBL_NM_SQL varchar(100) = ''
SET @ParamDef = N'@INP_ITBL_NM_SQL_OUTPUT varchar(100) OUTPUT';
SET @SQL = N'select @INP_ITBL_NM_SQL_OUTPUT = concat(LTRIM(RTRIM(a.db_schema_name)),LTRIM(RTRIM(b.Name)))
from '+ @db_and_schema+ ' as a, ' + @split_itbl +' as b
where b.ID = 2 and a.libname = (select c.Name from
'+ @split_itbl +' as c where c.ID = 1)'
EXEC sp_executesql @SQL, @ParamDef, @INP_ITBL_NM_SQL_OUTPUT=@INP_ITBL_NM_SQL OUTPUT;
SELECT @INP_ITBL_NM_SQL