> For the complete documentation index, see [llms.txt](https://wfsys.gitbook.io/workflow-engine-syntax/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wfsys.gitbook.io/workflow-engine-syntax/workflow_engine/sql_queries/update_sql_query.md).

# UpdateSqlQuery

Sql-запрос для обновления полей в таблице, для которых значения соответствующих параметров, переданных в запрос, равны NULL.

## Шаблон UpdateSqlQuery <a href="#template_update_sql_query" id="template_update_sql_query"></a>

```xml
<SqlQuery Name="" Type="Update">
  <Updates>
    <Update TableName="" Type="" Parameter="" OnlyLast="" />
  </Updates>
  <UpdateFields>
    <UpdateField Name="" Value="" />
  </UpdateFields>
  <Text></Text>
</SqlQuery>
```

## Описание UpdateSqlQuery <a href="#description_update_sql_query" id="description_update_sql_query"></a>

```xml
<SqlQuery Name="SqlQueryName" Type="Update">
  <!--Тэги, общие для всех sql-запросов-->
  <!--Тэги, специфичные для UpdateSqlQuery-->
</SqlQuery>
```

## Тэги, специфичные для UpdateSqlQuery <a href="#tags_update_sql_query" id="tags_update_sql_query"></a>

### UpdateFields <a href="#update_fields" id="update_fields"></a>

Поля для обновления и их значения.

Необязательный тэг. Значение тэга `<UpdateFields>`: список тэгов [`<UpdateField>`](#update_fields_update_field).

```xml
<UpdateFields>
  <UpdateField Name="field1_name" Value="Parameter1" />
  <UpdateField Name="field2_name" Value="Parameter2" />
  <UpdateField Name="field3_name" Value="Parameter3" />
</UpdateFields>
```

#### Тэг `<UpdateField>` <a href="#update_fields_update_field" id="update_fields_update_field"></a>

Поле таблицы для обновления значения.

Необязательный тэг. Значение тэга `<UpdateField>`: не ожидается.

#### Атрибуты тэга `<UpdateField>` <a href="#attributes_tag_update_fields_update_field" id="attributes_tag_update_fields_update_field"></a>

<table data-header-hidden><thead><tr><th align="center"></th><th width="502.3333333333333"></th></tr></thead><tbody><tr><td align="center">Name</td><td><p>Название поля в обновляемой таблице.</p><p></p><p>Обязательный атрибут. Ожидается название одного из полей обновляемой таблицы.</p></td></tr><tr><td align="center">Value</td><td><p>Имя параметра, который передает значение в это поле.</p><p></p><p>Обязательный атрибут. Ожидается название одного из параметров, переданных в запрос.</p></td></tr></tbody></table>

### Text <a href="#text" id="text"></a>

Содержит sql-запрос.

Обязательный тэг. Значение тэга `<Text>`: текст sql-запроса.

```xml
<Text>
  SQL-query
</Text>
```

Текст sql-запроса поддерживает переменные типа {Parameter}, заменяемые при его выполнении значениями параметров с соответствующими названиями, передаваемых клиентом.

Текст sql-запроса поддерживает переменную {UpdateFields}, заменяемую при его выполнении конструкцией следующего вида:

field1\_name = field1\_value,

field2\_name = field2\_value,

field3\_name = field3\_value

где field\<i>*\_*&#x6E;ame - название поля в обновляемой таблице, а field\<i>\_value - подставленное значение параметра Parameter\<i>.

Особенность такой подстановки заключается в том, что, если очередное значение field\<i>*\_*&#x76;alue равно NULL, то поле field2\_name исключается из конструкции подстановки. Таким образом, в таблице будут обновлены только те поля, значения для которых были переданы неравные NULL.

Например:

Название поля 1 - title

Название поля 2 - capacity

Название поля 3 - comment

Значение параметра 1 - "новый заголовок"

Значение параметра 2 - NULL

Значение параметра 3 - "новый комментарий"

Тогда переменная {UpdateFields} будет заменена в запросе следующей конструкцией:

title = 'новый заголовок',

comment = 'новый комментарий'
