Запрос возврата процедуры PostgreSql не имеет места назначения для данных результата - PullRequest
0 голосов
/ 09 октября 2019

Я создаю процедуру, которая вызывается триггером после вставки, и возникает ошибка, когда я использую оператор select в его теле.

Когда я НЕ использую select, чтобы получитьзначение, ошибки НЕТ, когда триггер вызывает эту процедуру:

BEGIN;

CREATE OR REPLACE FUNCTION calc_virtual()
RETURNS trigger
LANGUAGE plpgsql

AS $function$ 

DECLARE
    _virtual RECORD;
    _value_calc DECIMAL;
    _complet BOOLEAN;

BEGIN
    _value_calc = 0

    FOR _virtual IN SELECT value
                      FROM virtual
                     WHERE id = NEW.id 
    LOOP                             
        _value_calc = _value_calc-(value * 1.5);            
    END LOOP;

    INSERT INTO appointment (value) VALUES (_value_calc);

    RETURN NEW;
END;

$function$;

COMMIT;

Когда я использую select, чтобы получить значение, возникает ошибка, когда триггер вызывает эту процедуру:

BEGIN;

CREATE OR REPLACE FUNCTION calc_virtual()
RETURNS trigger
LANGUAGE plpgsql

AS $function$ 

DECLARE
    _virtual RECORD;
    _value_calc DECIMAL;
    _complet BOOLEAN;

BEGIN

    FOR _virtual IN SELECT value
                      FROM virtual
                     WHERE id = NEW.id 
    LOOP
        _value_calc = 0;
        _complet = TRUE;      

        SELECT  value_active
        FROM    appointment_virtual
        WHERE   name = _virtual.name;

        IF FOUND THEN
            _value_calc = _value_calc-(value_active * 1.5);
        ELSE
            _complet = False;
        END IF;            
    END LOOP;

    IF _complet THEN
        INSERT INTO appointment (value) VALUES (_value_calc);
    END IF;

    RETURN NEW;
END;

$function$;

COMMIT;

Спасибо за любую помощь!

...