Хранимая процедура обновления столбца на сервере SQL - PullRequest
1 голос
/ 06 декабря 2009

У меня есть требование обновить столбец с несколькими значениями. Запрос выглядит следующим образом.

Update table1 set column1 = (
  select value from table2 where table1.column0 = table2.coulmn
)

Существует ли обобщенная хранимая процедура для требования, подобного приведенному выше?

Ответы [ 3 ]

3 голосов
/ 06 декабря 2009

если не считать оператора в виде строки и использовать оператор "execute", я не знаю ни одного. Обычно "execute" хмурится, поскольку это потенциальная точка атаки инъекции.

1 голос
/ 06 декабря 2009

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

Кроме того, если вы не можете гарантировать, что подзапрос вернет ровно одну строку, возможно, безопаснее использовать специфичный для SQL Server и собственный формат обновления:

UPDATE f SET nav = n.nav
FROM camsfolio AS f
INNER JOIN camsnav AS n
ON f.schcode = n.schcode;
0 голосов
/ 07 декабря 2009

SQL Server не использует «обобщенные хранимые процедуры» для такого рода вещей. Вы сами должны создать свой собственный SP, составленный с использованием соответствующего параметризованного оператора UPDATE.

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