Хранимая процедура не запускается из-за проблемы во временной таблице - PullRequest
0 голосов
/ 24 апреля 2019

Я получаю эту ошибку при запуске моей хранимой процедуры:

Столбец '# 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;

Мне нужно только устранить ошибку, другие вещи в хранимой процедуре, с которыми у меня нет проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...