Можно ли запустить хранимую процедуру для установки значения в операторе обновления - TSQL - PullRequest
4 голосов
/ 06 сентября 2011

Мне интересно, возможно ли выполнить хранимую процедуру в операторе обновления в TSQL.

Я хочу выполнить хранимую процедуру, которая установит CategoryID для таблицы номеров, передавая число из строки, в которой в данный момент находится оператор обновления.

Так что-то вроде:

UPDATE [TelephoneNumberManagement].[dbo].[Number]
SET [CategoryID] = exec goldennumbers2 [Number];

Ответы [ 2 ]

8 голосов
/ 06 сентября 2011

Нет.

Вы могли бы сделать это, если бы это была функция:

UPDATE [TelephoneNumberManagement].[dbo].[Number]
SET [CategoryID] = goldennumbers2([Number]);

Просто имейте в виду, что функция не может иметь побочных эффектов.Если вы пытаетесь запустить кучу операторов DML в этой процедуре, вам следует:

  • A) Использовать триггер, если у вас есть зависимости в других таблицах, которые необходимо синхронизировать сNumber стол.Даже если вы захотите ...
  • B) Переосмыслите свой дизайн.Это похоже на попытку смешать практики множественного и итеративного программирования.Почти наверняка есть более чистое решение.
2 голосов
/ 06 сентября 2011

Не совсем, есть некоторые опции, такие как пользовательские функции. Триггеры могут делать то, что вы хотите, в зависимости от того, что вы пытаетесь сделать и почему.

Что именно делает ваша процедура goldennumbers2?

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