Сохранение данных командами SQL

Сохранение данных командами SQL

Чтобы сохранить изменения в базе данных, используйте SQL-команды.

Ниже приведен пример настройки для таблицы xls.objects:

IDTABLE_SCHEMATABLE_NAMETABLE_TYPETABLE_CODEINSERT_OBJECTUPDATE_OBJECTDELETE_OBJECT
 s02view_cashbookVIEW<INSERT SQL><UPDATE SQL><DELETE SQL>
 s02usp_cashbookPROCEDURE<INSERT SQL><UPDATE SQL><DELETE SQL>
 s02code_cashbookCODE<SELECT SQL><INSERT SQL><UPDATE SQL><DELETE SQL>

Также приведен пример настройки для представления списка запросов:

IDTABLE_SCHEMATABLE_NAMETABLE_TYPETABLE_CODEINSERT_PROCEDUREUPDATE_PROCEDUREDELETE_PROCEDUREPROCEDURE_TYPE
 s02view_cashbookVIEW<INSERT SQL><UPDATE SQL><DELETE SQL>
 s02usp_cashbookPROCEDURE<INSERT SQL><UPDATE SQL><DELETE SQL>
 s02code_cashbookCODE<SELECT SQL><INSERT SQL><UPDATE SQL><DELETE SQL>

Ниже приведены примеры SQL-кода.

Детали реализации

SaveToDB и DBEdit выполняют указанный SQL-код для операций вставки, обновления и удаления.

DBGate выполняет SQL-код на стороне сервера в соответствии с командами POST, PUT и DELETE.

ODataDB создает объекты EntitySet для представлений и FunctionImport, которые возвращают EntitySet для процедур и объектов на основе SQL-кода.

Параметры SQL-команд

SQL-команды могут содержать параметры, которые получают значения по следующим правилам:

  1. Значения из колонок данных с тем же именем. Например, параметры @id и @name получают значения из колонок id и name.
  2. Значения параметров запроса с тем же именем. Например, параметр @account_id может использовать значение @account_id из запроса данных.
  3. Значения именованных ячеек Excel. Например, параметр @customer_id из именованной ячейки customer_id (только в надстройке SaveToDB).
  4. Специальные контекстные значения, такие как @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

Этот веб-сайт использует куки. Продолжая использовать веб-сайт, Вы принимаете условия Политики защиты персональных данных.