Списки значений из команд SQL

Списки значений из команд SQL

Для получения списков значений параметров и списков значений ячеек можно использовать SQL-запросы.

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

IDTABLE_SCHEMATABLE_NAMECOLUMN_NAMEEVENT_NAMEHANDLER_SCHEMAHANDLER_NAMEHANDLER_TYPEHANDLER_CODETARGET_WORKSHEETMENU_ORDEREDIT_PARAMETERS
 s02code_cashbookcompany_idValidationLists02xl_list_company_id_codeCODE<SQL>
 s02code_cashbookcompany_idParameterValuess02xl_list_company_id_codeCODE<SQL>

Используйте тип CODE в колонке HANDLER_TYPE и SQL-запрос в колонке HANDLER_CODE.

В простом случае SQL-код может выглядеть так:

SELECT id, name FROM s02.companies ORDER BY name, id

Вы также можете использовать параметры. Например, чтобы вывести значения на языке пользователя:

SELECT
    c.id,
    COALESCE(t.TRANSLATED_NAME, c.name) AS name
FROM
    s02.companies c
    LEFT OUTER JOIN s02.xl_translations t ON t.TABLE_SCHEMA = 's02' AND t.TABLE_NAME = 'strings'
            AND t.LANGUAGE_NAME = @data_language AND t.COLUMN_NAME = c.name
ORDER BY
    name,
    id

В этом примере используется контекстный параметр @data_language, который получает код языка данных пользователя.

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

Определение кода в одном месте

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

Чтобы избежать дублирования, можно использовать два подхода:

  1. Создать и использовать хранимую процедуру вместо кода.
  2. Определить объект на основе SQL-кода в таблице xls.objects и использовать его в таблице xls.handlers.

Вот пример настройки в таблице xls.objects для второго подхода:

IDTABLE_SCHEMATABLE_NAMETABLE_TYPETABLE_CODEINSERT_OBJECTUPDATE_OBJECTDELETE_OBJECT
s02xl_list_company_id_codeCODESELECT id, name FROM s02.companies ORDER BY name, id

В этом случае вы можете использовать объект s02.xl_list_company_id_code без повторного определения его кода:

IDTABLE_SCHEMATABLE_NAMECOLUMN_NAMEEVENT_NAMEHANDLER_SCHEMAHANDLER_NAMEHANDLER_TYPEHANDLER_CODETARGET_WORKSHEETMENU_ORDEREDIT_PARAMETERS
 s02code_cashbookcompany_idValidationLists02xl_list_company_id_codeCODE
 s02code_cashbookcompany_idParameterValuess02xl_list_company_id_codeCODE

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