Построение запросов на изменение данных
Glossary Item Box
Для создания запросов на изменение данных в базе в bpm'online используется класс Update.
В качестве параметров конструктор класса Update может принимать следующие объекты:
- Пользовательское подключение (Update (UserConnection)).
- Пользовательское подключение и имя схемы, в которой будут изменяться данные (Update (UserConnection,String)).
- Пользовательское подключение и объект источника данных (Update (UserConnection,ModifyQuerySource)).
- Другой объект Update (Update (Update)). В результате будет создана копия запроса Update, переданного в параметре.
Ниже приведены примеры использования методов класса Update для построения запросов различной сложности. В каждом примере создается объект Update, а затем приводится текст SQL-запроса, который будет сгенерирован для различных СУБД (MS SQL).
Пример 1
var update = new Update(userConnection, "Contact") .Set("Name", Func.IsNull(Column.SourceColumn("Name"), Column.Parameter("ParameterValue"))); |
UPDATE [dbo].[Contact] SET [Name] = ISNULL([Name], @P1)
|
Пример 2
var update = new Update(userConnection, "City") .Set("CreatedById", new Select(userConnection).Top(1) .Column("Id") .From("Contact") .Where("Name").IsEqual(Column.Parameter("Supervisor"))) .Set("ModifiedById", new Select(userConnection).Top(1) .Column("Id") .From("Contact") .Where("Name").IsEqual(Column.Parameter("User1"))); |
UPDATE [dbo].[City] SET [CreatedById] = (SELECT TOP 1 [Id] FROM [dbo].[Contact] WHERE [Name] = @P1), [ModifiedById] = (SELECT TOP 1 [Id] FROM [dbo].[Contact] WHERE [Name] = @P2) |