У меня есть таблица с индексом, который требует, чтобы CONCAT_NULL_YIELDS_NULL и ANSI_WARNINGS были включены. Вот моя хранимая процедура для обновления значения в этой таблице.
SET CONCAT_NULL_YIELDS_NULL ON;
SET ANSI_WARNINGS ON;
GO
CREATE OR ALTER PROCEDURE My_Procedure
@Namespace VARCHAR(50),
@Name VARCHAR(50),
@Value VARCHAR(255)
AS
BEGIN TRAN
SET ANSI_WARNINGS ON;
SET CONCAT_NULL_YIELDS_NULL ON;
UPDATE MyTable SET Value = @Value WHERE Namespace = @Namespace AND Name = @Name;
COMMIT TRAN
Но когда я exec [My_Procedure] @Namespace='my namespace', @name='my name', @value='sp value'
получаю:
ОБНОВЛЕНИЕ не удалось, поскольку следующие параметры SET имеют неправильные настройки: 'CONCAT_NULL_YIELDS_NULL, ANSI_WARNINGS' , Убедитесь, что параметры SET верны для использования с индексированными представлениями и / или индексами для вычисляемых столбцов и / или отфильтрованных индексов и / или уведомлений о запросах и / или XML методов типа данных и / или операций с пространственным индексом.
Если я сделаю
set ansi_warnings on;
set concat_null_yields_null on;
exec [My_Procedure] @Namespace='my namespace', @name='my name', @value='sp value'
, то это будет работать без ошибок. Но я ожидаю, что, поместив эти команды в хранимую процедуру, это сработает. Чего мне не хватает?