Я получаю эту ошибку при запуске моей хранимой процедуры:
Столбец '# objects.TableName' недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в GROUP BYпункт.
Я понимаю саму ошибку, но она не имеет смысла в моем случае, так как сама временная таблица не имеет агрегации, и у меня есть эта точная временная таблица, содержащаяся в другой хранимой процедуреи работает там без проблем.Временная таблица создается без проблем вне хранимой процедуры.
CREATE TABLE #objects
(
ObjectId INT
,SchemaName NVARCHAR(20)
,TableName NVARCHAR(50)
,ColumnName NVARCHAR(100)
,ObjectName NVARCHAR(150)
,Type NVARCHAR(50)
,ObjectDefinition NVARCHAR(MAX)
,IndexName NVARCHAR(100)
,IndexType NVARCHAR(50)
,IsPrimaryKey BIT
,IsUniqueKey BIT
);
INSERT INTO #objects (
ObjectId
,SchemaName
,TableName
,ColumnName
,ObjectName
,Type
,ObjectDefinition
,IndexName
,IndexType
,IsPrimaryKey
,IsUniqueKey
)
SELECT ObjectId = a.object_id
,SchemaName = SCHEMA_NAME ( a.schema_id )
,TableName = e.name
,ColumnName = COL_NAME ( b.parent_object_id, b.parent_column_id )
,ObjectName = OBJECT_NAME ( a.object_id )
,Type = a.type_desc
,ObjectDefinition = CAST(OBJECT_DEFINITION ( a.object_id ) AS NVARCHAR(MAX))
,IndexName = ch.name
,IndexType = ch.type_desc
,IsPrimaryKey = NULL
,IsUniqueKey = NULL
FROM sys.objects AS a
LEFT JOIN sys.default_constraints AS b
ON a.object_id = b.object_id
LEFT JOIN sys.check_constraints AS c
ON a.object_id = c.object_id
LEFT JOIN sys.tables AS e
ON e.object_id = a.parent_object_id
LEFT JOIN sys.indexes AS ch
ON a.object_id = ch.object_id
WHERE a.type_desc NOT IN ( 'INTERNAL_TABLE'
,'SYSTEM_TABLE'
,'SERVICE_QUEUE'
,'SQL_STORED_PROCEDURE'
,'SQL_INLINE_TABLE_VALUED_FUNCTION'
,'SQL_TABLE_VALUED_FUNCTION'
,'PRIMARY_KEY_CONSTRAINT'
,'UNIQUE_CONSTRAINT' )
AND ch.type_desc IN ( NULL
,'CLUSTERED COLUMNSTORE' )
UNION ALL
SELECT ObjectId = ix.object_id
,SchemaName = SCHEMA_NAME ( tab.schema_id )
,TableName = OBJECT_NAME ( tab.object_id )
,ColumnName = col.name
,ObjectName = ix.name
,Type = ix.type_desc
,ObjectDefinition = NULL
,IndexName = ix.name
,IndexType = ix.type_desc
,IsPrimaryKey = ix.is_primary_key
,IsUniqueKey = ix.is_unique_constraint
FROM sys.tables AS tab
INNER JOIN sys.indexes AS ix
ON tab.object_id = ix.object_id
INNER JOIN sys.index_columns AS ic
ON ic.object_id = ix.object_id
AND ic.index_id = ix.index_id
INNER JOIN sys.columns AS col
ON ix.object_id = col.object_id
AND col.column_id = ic.column_id
WHERE ix.is_primary_key = 1
OR ix.is_unique_constraint = 1
OR ix.type IN ( 1
,2 )
ORDER BY SchemaName
,Type;
Мне нужно только устранить ошибку, другие вещи в хранимой процедуре, с которыми у меня нет проблем.