concat_ws в plpg sql процедура, возвращающая ошибку, не имеет назначения для данных результата - PullRequest
0 голосов
/ 06 мая 2020

Я новичок в plpg sql, и теперь я близок к тому, что я хочу сделать:

create or replace function shop_apply_search_filters(
    price_min integer default null, 
    price_max integer default null, 
    ecom_id  integer default null, 
    cat_1 text default null, 
    cat_2 text default null)
returns text as
$$
BEGIN
    IF cat_1 = '' THEN
        cat_1 = null;
    END IF;

    IF cat_2 = '' THEN
        cat_2 = null;
    END IF;

    select concat_ws(
        ' and ',
        'price < '      || price_min,
        'price > '      || price_max,
        'ecom_id = '    || ecom_id,
        'category_1 = ' || cat_1,
        'category_2 = ' || cat_2
    ) AS filters;
END;
$$
LANGUAGE PLPGSQL;

Если я назову его SELECT shop_apply_search_filters(10,null,null,'',''), у меня будет эта ошибка:

ERROR:  query has no destination for result data
HINT:  If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT:  PL/pgSQL function shop_apply_search_filters(integer,integer,integer,text,text) line 11 at SQL statement
SQL state: 42601

Я не уверен, что мне нужно изменить, чтобы он работал

1 Ответ

2 голосов
/ 06 мая 2020

Вам необходимо return результат

RETURN 
    concat_ws(
        ' and ',
        'price < '      || price_min,
        'price > '      || price_max,
        'ecom_id = '    || ecom_id,
        'category_1 = ' || cat_1,
        'category_2 = ' || cat_2
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...