Я сохраняю значение в переменной featureId
а затем пытаюсь использовать это значение в своем операторе SELECT, но, похоже, postgres берет имя буквально и ищет столбец с именем "featureid". Я получаю сообщение об ошибке "ОШИБКА: столбец" featureid "не существует LINE 4: featureId"
Мой код ниже. Как я могу использовать значение переменной в моем операторе SELECT?
SELECT id INTO featureId FROM tableA WHERE NAME = 'some value'
INSERT INTO tableB (client_id, feature_id, does_have)
SELECT
id,
featureId,
TRUE
FROM tableA
Всего 2 ответа
Без объявленной переменной ваш SELECT INTO
является версией SELECT INTO
которая создает таблицу . Чтобы увидеть это сами, попробуйте:
SELECT id
INTO featureid
FROM tablea
WHERE name = 'some value'
SELECT *
FROM featureid;
Для присвоения значения переменной переменная должна быть объявлена. Вы можете использовать анонимный блок DO
.
DO
$$
DECLARE
featureid tablea.id%TYPE;
BEGIN
SELECT id
INTO featureid
FROM tablea
WHERE name = 'some value'
INSERT INTO tableb
(client_id,
feature_id,
does_have)
SELECT id,
featureid,
true
FROM tablea;
END;
$$
LANGUAGE plpgsql;
Есть несколько ошибок в том, что вы пытаетесь сделать:
если 'some-value' является известной константой, а NAME уникально, просто вставьте это значение в предложение where вставки в. Если вы пытаетесь вставить больше данных, взгляните на синтаксис массовой вставки postgres: массовая вставка