Получение данных из SQL-запросов
Разработчики баз данных могут определить именованные SQL-запросы в таблице xls.objects или представлениях списков запросов.
Пользователи могут подключаться к таким запросам в мастерах подключения SaveToDB и DBEdit, или, используя URL списка запросов, в DBGate и ODataDB.
Ниже приведен пример для таблицы xls.objects:
ID | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | TABLE_CODE | INSERT_OBJECT | UPDATE_OBJECT | DELETE_OBJECT |
---|---|---|---|---|---|---|---|
s02 | code_cashbook | CODE | SELECT * FROM s02.cashbook |
Ниже приведен пример для представления списка запросов:
ID | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | TABLE_CODE | INSERT_PROCEDURE | UPDATE_PROCEDURE | DELETE_PROCEDURE | PROCEDURE_TYPE |
---|---|---|---|---|---|---|---|---|
s02 | code_cashbook | CODE | SELECT * FROM s02.cashbook |
Объекты на основе запросов SQL аналогичны хранимым процедурам.
Для них можно сохранять изменения, использовать события изменений, настраивать списки значений, переводить имена, поля и параметры.
Более того, именованные SQL-запросы можно использовать аналогично хранимым процедурам в других таблицах конфигураций.
В таких объектах можно использовать команды SELECT, EXEC, GRANT, REVOKE и другие. Однако, для получения данных можно использовать только SELECT и EXEC.
Детали реализации
SaveToDB и DBEdit посылают готовые запросы SQL на сервер баз данных.
ODataDB создает объекты FunctionImport. DBGate создает API вызова, аналогичный хранимым процедурам.
Примеры SQL запросов для получения данных
Ниже приведены примеры запросов для всех поддерживаемых платформ баз данных.
Обратите внимание, что SQL Server, SQL Server Compact и SQLite используют параметры с префиксом @, тогда как остальные платформы с префиксом в виде двоеточия.
SQL Server | MySQL | PostgreSQL | Oracle | DB2 | NuoDB | Snowflake | SQL CE | 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 and 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, IBM DB2, NuoDB, and 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-запроса для получения данных из SQL Server Compact and 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)