Я новичок в Postgres и пытаюсь создать тест для случая, когда результат следующего запроса возвращает ноль, но я не могу понять, как это сделать правильно.Я продолжаю получать следующую ошибку
ERROR: syntax error at or near "WITH"
LINE 20: WITH expected (tran_id, sell_chan, total) AS (VALUES (3, 'St...
при попытке запустить следующий код.Обратите внимание, что если я удаляю части BEGIN и END и EXCEPTION, все остальное работает нормально и получает ожидаемый нулевой запрос.
-- create test database
DROP TABLE IF EXISTS test_sales;
CREATE TABLE test_sales(
tran_id INT PRIMARY KEY,
chan_c VARCHAR(1),
total FLOAT
);
-- populate test database
INSERT INTO test_sales VALUES (1, 'S', 99.99);
INSERT INTO test_sales VALUES (2, 'O', 99.99);
INSERT INTO test_sales VALUES (3, 'S', 100);
INSERT INTO test_sales VALUES (4, 'O', 100);
INSERT INTO test_sales VALUES (5, 'P', 99.99);
INSERT INTO test_sales VALUES (6, 'P', 100);
BEGIN
WITH expected (tran_id, sell_chan, total) AS (VALUES (3, 'Store', 100), (4, 'Online',100), (6,'Other',100))
SELECT tran_id, sell_chan, total INTO my_temp FROM (SELECT * FROM expected) AS q1 EXCEPT (SELECT tran_id,
CASE chan_c
WHEN 'S' THEN 'Store'
WHEN 'O' THEN 'Online'
ELSE 'Other'
END sell_chan,
total
FROM test_sales AS q2 WHERE q2.total>=100) EXCEPTION WHEN NO_DATA_FOUND THEN NULL;
END;