Извините за длину, я пытаюсь дать много информации, чтобы избежать несоответствующих решений.
Моя цель - встроить как минимум 1 оператор UPDATE в оператор SELECT, чтобы у меня была возможность обновить некоторые вычисленные значения за мгновение до запуска оператора SELECT (представьте, что это TRIGGER в SELECT). VIEW не является непосредственным решением, так как я ограничен системой, которую я использую (см. Ниже).
Я настраиваю стороннюю коммерческую ERP, которая слаба по функциям (система останется безымянной! - в результате вы не слышали об этом, но она тоже не выросла дома). У этого есть постоянная возможность запроса, где я могу использовать текстовый / GUI, чтобы построить запрос SELECT. После сохранения запроса пользователи могут щелкнуть запрос, чтобы выполнить его и увидеть результаты. ERP работает поверх MS SQL Server 2000; Обновление версии НЕ в картах прямо сейчас. Я могу написать любой набор функций, который мне нужен, за пределами ERP на любом языке, который я хочу, я делал это в прошлом, если функции гарантируют это. Но моему сообществу пользователей легче, когда мои настройки могут быть выполнены в системе ERP.
Запрос может быть сколь угодно сложным, но пакет ERP создает сам оператор SQL Select. Внутренняя часть скомпилированной ERP выглядит примерно так (это только предположение!):
"SELECT " + fieldList + " FROM " + tableListAndJoins + " WHERE " + whereCond
Конструктор GUI помогает начинающим пользователям создавать fieldList и т. Д., Но вы можете обойти его и написать предложения в тексте, если SQL-код допустим при объединении, как описано выше.
Я не могу найти заклинание для запуска хранимой процедуры в качестве побочного эффекта оператора SELECT, будь то в предложении select, предложении where и т. Д. Мне действительно все равно, как сделать джейлбрейк системы - - стабильная атака с использованием SQL-инъекций была бы приемлемой, если только это не означало, что мне пришлось изменять безопасность самого сервера sql. Я посмотрел на UDF, но вы не можете поместить оператор UPDATE в скалярную UDF, и нет смысла пытаться изменить возвращение таблицы UDF (или нет?). Если вы можете ОБНОВИТЬ из VIEW, то я хотел бы увидеть пример, но я понимаю, что могу использовать VIEW для вычисления столбцов, и это не то решение, которое я ищу. В Интернете я читал наводящее на размышления заявление о возможности использовать какой-то XP_ для достижения этой цели, но какой именно XP_ или как это сделать, я не знаю.
этот вопрос сам по себе НЕ является решением: Обновление таблицы в операторе выбора