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