Списки значений из хранимых процедур

Списки значений из хранимых процедур

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

Использование хранимых процедур — это предпочтительный подход, так как он позволяет возвращать списки на разных языках.

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

IDTABLE_SCHEMATABLE_NAMECOLUMN_NAMEEVENT_NAMEHANDLER_SCHEMAHANDLER_NAMEHANDLER_TYPEHANDLER_CODETARGET_WORKSHEETMENU_ORDEREDIT_PARAMETERS
 s02usp_cashbookcompany_idValidationLists02xl_list_company_idPROCEDURE
 s02usp_cashbookcompany_idParameterValuess02xl_list_company_idPROCEDURE

Примеры получения списков значений хранимыми процедурами

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

Используйте эти решения для получения данных.

Все примеры процедур возвращают колонки id и name из таблицы s02.companies.

Кроме того, в процедурах показан простой способ перевода списков значений на любой язык с использованием таблицы xls.translations и параметра @data_language.

Конечно, можно реализовать собственное решение для перевода или просто использовать обычный SELECT, например:

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

Больше примеров можно найти в Sample 02 - Advanced Features из SaveToDB SDK.

SQL Server | MySQL | PostgreSQL | Oracle | Snowflake

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

Обратите внимание на команду SET NOCOUNT ON, которая необходима для использования хранимых процедур SQL Server в Microsoft Excel.

CREATE PROCEDURE [s02].[xl_list_company_id]
    @data_language char(2) = NULL
AS
BEGIN

SET NOCOUNT ON

SELECT
    c.id,
    COALESCE(t.TRANSLATED_NAME, c.name) AS name
FROM
    s02.companies c
    LEFT OUTER JOIN xls.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

END

Пример получения списка значений хранимой процедурой для MySQL

CREATE PROCEDURE s02.xl_list_company_id (
    data_language char(2)
)
BEGIN

SELECT
    c.id,
    COALESCE(t.TRANSLATED_NAME, c.name) AS name
FROM
    s02.companies c
    LEFT OUTER JOIN xls.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;

END
//

Пример получения списка значений хранимой процедурой для PostgreSQL

CREATE OR REPLACE FUNCTION s02.xl_list_company_id (
    data_language varchar(2)
)
RETURNS table (
    id integer,
    name varchar
)
LANGUAGE plpgsql
SECURITY DEFINER
AS $$
BEGIN

RETURN QUERY
SELECT
    c.id,
    COALESCE(t.TRANSLATED_NAME, c.name) AS name
FROM
    s02.companies c
    LEFT OUTER JOIN xls.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 NULLS FIRST,
    id NULLS FIRST;

END
$$;

Пример получения списка значений хранимой процедурой для Oracle Database

CREATE PROCEDURE S02.XL_LIST_COMPANY_ID (
    DATA_LANGUAGE CHAR,
    DATA OUT SYS_REFCURSOR
)
AS
BEGIN

OPEN DATA FOR
SELECT
    c.ID,
    COALESCE(t.TRANSLATED_NAME, N'' || c.NAME) AS NAME
FROM
    S02.COMPANIES c
    LEFT OUTER JOIN XLS.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;

END;
/

Пример получения списка значений хранимой процедурой для Snowflake

Snowflake поддерживает хранимые процедуры на языке JavaScript, которые используются аналогично.

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