Я пытаюсь добавить столбец в определяемый пользователем тип таблицы. Я провел некоторое исследование, и вот что у меня сейчас:
-- First, rename existing table type to something else
EXEC sp_rename 'TT_MY_TABLE_TYPE', 'TT_MY_TABLE_TYPE_1'
-- Create the new table type
CREATE TYPE [dbo].[TT_MY_TABLE_TYPE] AS TABLE(
[MY_FIELD] [varchar](20) NULL
)
GO
-- Do a refresh of the SP/views so that the SP/views will refer to the new table type
-- Save the list of dependencies to a temporary table
SELECT 'sp_refreshsqlmodule ' + quotename('MySchemaName.' +object_name(referencing_id), '''') AS SQL_CMD
INTO #TEMPSQL
FROM sys.sql_expression_dependencies
WHERE referenced_class_desc = 'TYPE' and referenced_entity_name = 'TT_MY_TABLE_TYPE';
DECLARE @sql NVARCHAR(1000)
-- Do a loop for the list of dependencies, use dynamic SQL to execute the SQL commands
DECLARE c_Cur CURSOR FOR
SELECT SQL_CMD
FROM #TEMPSQL
OPEN c_Cur
FETCH NEXT FROM c_Cur INTO @sql
WHILE (@@FETCH_STATUS = 0)
BEGIN
EXEC SP_EXECUTESQL @statement = @sql
FETCH NEXT FROM c_Cur INTO @sql
END
CLOSE c_Cur
DEALLOCATE c_Cur
-- Drop the old table type
DROP TYPE TT_MY_TABLE_TYPE_1
DROP TABLE #TEMPSQL
К сожалению, при обновлении хранимых / процедур (их зависимостей) для отражения нового типа я получаю следующую ошибку:
Процедура sp_refreshsqlmodule_internal, строка 85 [Строка пакетного запуска 0]
Тип операнда cla sh: TT_MY_TABLE_TYPE несовместим с TT_MY_TABLE_TYPE_1.
Я предполагаю, что ошибка что-то иначе, поскольку все, что я делал, это добавлял один столбец к новому типу.
Когда я пытаюсь изменить функцию, имеющую этот тип в качестве зависимости, у меня появляется тот же тип операнда cla sh error
Не могли бы вы помочь мне определить, в чем причина root этой проблемы?