Как присвоить значение переменной по ее строковому имени? - PullRequest
0 голосов
/ 16 октября 2019
CREATE OR REPLACE FUNCTION test(ITEM_ID VARCHAR)
  RETURNS VOID AS $$
DECLARE n1 INT;
        n2 INT;
        ...
        n100 INT;
BEGIN
IF ITEM_ID='item1' THEN
    SELECT item1 INTO n1 FROM ...;
ELSIF ITEM_ID = 'item2' THEN
    SELECT item2 INTO n2 FROM ...;
...
ELSIF ITEM_ID = 'item100' THEN
    SELECT item100 INTO n100 FROM ...;
NED IF.
END;
$$ LANGUAGE plpgsql;

Суффиксные номера 1,2 ..., 100 ITEM_ID и переменные n1, n2 ..., n100 соответствуют! Я попытался сократить длинную инструкцию следующим образом, но безуспешно!

..
BEGIN
-- eg. select 1 into 'n1', select 2 into 'n2'..., , select N into 'nN'
     EXECUTE FORMAT( 'SELECT %1$s INTO %2$s FROM ...;', SUBSTRING(item_id, 5), 'n' || SUBSTRING(item_id, 5) );
END;
...

Имя строковой переменной (например, 'n1', 'n2' ... соответствующие имена переменных n1, n2 ... )!

Как назначить значение для каждой переменной (n1, n2 ...) по каждой представленной строке: (n1 ',' n2 '...)?

Любая помощьБуду очень признателен!

...