Сохранение данных командами 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, SQL Server Compact и SQLite используют параметры с префиксом @, тогда как остальные платформы с префиксом в виде двоеточия.
SQL Server | MySQL | PostgreSQL | Oracle | DB2 | NuoDB | Snowflake | SQL CE | 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 and 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, IBM DB2, NuoDB, and 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 для SQL Server Compact and 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