Сохранение данных с помощью SQL-команд
Чтобы сохранить изменения в базе данных, используйте SQL-команды.
Ниже приведен пример настройки для таблицы xls.objects:
| ID | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | TABLE_CODE | INSERT_OBJECT | UPDATE_OBJECT | DELETE_OBJECT |
|---|---|---|---|---|---|---|---|
| s02 | view_cashbook | VIEW | <INSERT SQL> | <UPDATE SQL> | <DELETE SQL> | ||
| s02 | usp_cashbook | PROCEDURE | <INSERT SQL> | <UPDATE SQL> | <DELETE SQL> | ||
| s02 | code_cashbook | CODE | <SELECT SQL> | <INSERT SQL> | <UPDATE SQL> | <DELETE SQL> |
Также приведен пример настройки для представления списка запросов:
| ID | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | TABLE_CODE | INSERT_PROCEDURE | UPDATE_PROCEDURE | DELETE_PROCEDURE | PROCEDURE_TYPE |
|---|---|---|---|---|---|---|---|---|
| s02 | view_cashbook | VIEW | <INSERT SQL> | <UPDATE SQL> | <DELETE SQL> | |||
| s02 | usp_cashbook | PROCEDURE | <INSERT SQL> | <UPDATE SQL> | <DELETE SQL> | |||
| s02 | code_cashbook | CODE | <SELECT SQL> | <INSERT SQL> | <UPDATE SQL> | <DELETE SQL> |
Ниже приведены примеры SQL-кода.
Детали реализации
SaveToDB и DBEdit выполняют указанный SQL-код для операций вставки, обновления и удаления.
DBGate выполняет SQL-код на стороне сервера в соответствии с командами POST, PUT и DELETE.
ODataDB создает объекты EntitySet для представлений и FunctionImport, которые возвращают EntitySet для процедур и объектов на основе SQL-кода.
Параметры SQL-команд
SQL-команды могут содержать параметры, которые получают значения по следующим правилам:
- Значения из колонок данных с тем же именем. Например, параметры
@idи@nameполучают значения из колонокidиname. - Значения параметров запроса с тем же именем. Например, параметр
@account_idможет использовать значение@account_idиз запроса данных. - Значения именованных ячеек Excel. Например, параметр
@customer_idиз именованной ячейкиcustomer_id(только в надстройкеSaveToDB). - Специальные контекстные значения, такие как
@rownumили@transaction_id.
SaveToDB 10+, DBEdit, DBGate и ODataDB также поддерживают параметры с префиксом source_, которые получают исходные значения колонок данных.
Иногда имена колонок могут содержать символы, которые нельзя использовать в именах параметров. Например, "customer name".
В таких случаях запрещенные символы можно заменить на эквиваленты в XML-кодировке. Например, "customer_x0020_name".
См. Соглашение по именам параметров.
См. также Контекстные параметры.
Примеры SQL-команд для сохранения данных
Ниже приведены примеры SQL-команд для получения и сохранения данных для всех поддерживаемых платформ баз данных.
Обратите внимание, что SQL Server и SQLite используют параметры с префиксом @, а остальные платформы — с префиксом :.
SQL Server | MySQL | PostgreSQL | Oracle | Snowflake | SQLite
Примеры SQL-команд для Microsoft SQL Server
Код SELECT:
SELECT
t.id,
CAST(t.[date] AS datetime) AS [date],
t.account_id,
t.item_id,
t.company_id,
t.debit,
t.credit
FROM
s02.cashbook t
WHERE
COALESCE(@account_id, t.account_id, -1) = COALESCE(t.account_id, -1)
AND COALESCE(@item_id, t.item_id, -1) = COALESCE(t.item_id, -1)
AND COALESCE(@company_id, t.company_id, -1) = COALESCE(t.company_id, -1)
Код INSERT:
INSERT INTO s02.cashbook
([date], account_id, item_id, company_id, debit, credit)
VALUES
(@date, @account_id, @item_id, @company_id, @debit, @credit)
Код UPDATE:
UPDATE s02.cashbook
SET
[date] = @date,
account_id = @account_id,
item_id = @item_id,
company_id = @company_id,
debit = @debit,
credit = @credit
WHERE
id = @id
Код DELETE:
DELETE FROM s02.cashbook WHERE id = @id
Примеры SQL-команд для MySQL и PostgreSQL
Код SELECT:
SELECT
t.id,
t.date,
t.account_id,
t.item_id,
t.company_id,
t.debit,
t.credit
FROM
s02.cashbook t
WHERE
COALESCE(:account_id, t.account_id, -1) = COALESCE(t.account_id, -1)
AND COALESCE(:item_id, t.item_id, -1) = COALESCE(t.item_id, -1)
AND COALESCE(:company_id, t.company_id, -1) = COALESCE(t.company_id, -1)
Код INSERT:
INSERT INTO s02.cashbook
([date], account_id, item_id, company_id, debit, credit)
VALUES
(:date, :account_id, :item_id, :company_id, :debit, :credit)
Код UPDATE:
UPDATE s02.cashbook
SET
[date] = :date,
account_id = :account_id,
item_id = :item_id,
company_id = :company_id,
debit = :debit,
credit = :credit
WHERE
id = :id
Код DELETE:
DELETE FROM s02.cashbook WHERE id = :id
Примеры SQL-команд для Oracle Database и Snowflake
Код SELECT:
SELECT
t.ID,
t."DATE",
t.ACCOUNT_ID,
t.ITEM_ID,
t.COMPANY_ID,
t.DEBIT,
t.CREDIT
FROM
S02.CASHBOOK t
WHERE
COALESCE(:ACCOUNT_ID, t.ACCOUNT_ID, -1) = COALESCE(t.ACCOUNT_ID, -1)
AND COALESCE(:ITEM_ID, t.ITEM_ID, -1) = COALESCE(t.ITEM_ID, -1)
AND COALESCE(:COMPANY_ID, t.COMPANY_ID, -1) = COALESCE(t.COMPANY_ID, -1)
Код INSERT:
INSERT INTO S02.CASHBOOK
([DATE], ACCOUNT_ID, ITEM_ID, COMPANY_ID, DEBIT, CREDIT)
VALUES
(:DATE, :ACCOUNT_ID, :ITEM_ID, :COMPANY_ID, :DEBIT, :CREDIT)
Код UPDATE:
UPDATE S02.CASHBOOK
SET
"DATE" = :DATE,
ACCOUNT_ID = :ACCOUNT_ID,
ITEM_ID = :ITEM_ID,
COMPANY_ID = :COMPANY_ID,
DEBIT = :DEBIT,
CREDIT = :CREDIT
WHERE
ID = :ID
Код DELETE:
DELETE FROM S02.CASHBOOK WHERE ID = :ID
Примеры SQL-команд для SQLite
Код SELECT:
SELECT
t.id,
t.date,
t.account_id,
t.item_id,
t.company_id,
t.debit,
t.credit
FROM
cashbook t
WHERE
COALESCE(@account_id, t.account_id, -1) = COALESCE(t.account_id, -1)
AND COALESCE(@item_id, t.item_id, -1) = COALESCE(t.item_id, -1)
AND COALESCE(@company_id, t.company_id, -1) = COALESCE(t.company_id, -1)
Код INSERT:
INSERT INTO cashbook
(date, account_id, item_id, company_id, debit, credit)
VALUES
(@date, @account_id, @item_id, @company_id, @debit, @credit)
Код UPDATE:
UPDATE s02.cashbook
SET
date = @date,
account_id = @account_id,
item_id = @item_id,
company_id = @company_id,
debit = @debit,
credit = @credit
WHERE
id = @id
Код DELETE:
DELETE FROM s02.cashbook WHERE id = @id