Получение данных из SQL-запросов

Получение данных из SQL-запросов

Разработчики баз данных могут определять именованные SQL-запросы в таблице xls.objects или в представлениях списков запросов.

Пользователи могут подключаться к этим запросам через мастера подключения SaveToDB и DBEdit, а также с помощью URL списка запросов в DBGate и ODataDB.

Вот пример для таблицы xls.objects:

IDTABLE_SCHEMATABLE_NAMETABLE_TYPETABLE_CODEINSERT_OBJECTUPDATE_OBJECTDELETE_OBJECT
s02code_cashbookCODESELECT * FROM s02.cashbook

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

IDTABLE_SCHEMATABLE_NAMETABLE_TYPETABLE_CODEINSERT_PROCEDUREUPDATE_PROCEDUREDELETE_PROCEDUREPROCEDURE_TYPE
s02code_cashbookCODESELECT * FROM s02.cashbook

Объекты на основе SQL-запросов аналогичны хранимым процедурам.

Для них можно сохранять изменения, использовать обработчики событий, настраивать списки значений, переводить имена, поля и параметры.

Кроме того, именованные SQL-запросы можно использовать так же, как хранимые процедуры в других таблицах конфигураций.

В таких объектах можно применять команды SELECT, EXEC, GRANT, REVOKE и другие. Однако для получения данных разрешено использовать только SELECT и EXEC.

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

SaveToDB и DBEdit отправляют готовые SQL-запросы на сервер баз данных.

ODataDB создает объекты FunctionImport. DBGate формирует API вызовы, аналогичные хранимым процедурам.

Примеры SQL-запросов для получения данных

Ниже приведены примеры запросов для всех поддерживаемых платформ баз данных.

Обратите внимание, что SQL Server и SQLite используют параметры с префиксом @, в то время как другие платформы используют префикс в виде двоеточия.

SQL Server | MySQL | PostgreSQL | Oracle | Snowflake | SQLite

Пример SQL-запроса для получения данных из Microsoft SQL Server

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)

Пример SQL-запроса для получения данных из MySQL и PostgreSQL

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)

Пример SQL-запроса для получения данных из Oracle Database и Snowflake

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)

Пример SQL-запроса для получения данных из SQLite

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)

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