Postgres:if-else 条件取决于提示,在通过 \i 调用的 .sql 文件中

Postgres: if-else condition depending on prompt, in .sql file called via \i

使用 Postgres 10.10,这就是我想要完成的。我想要一个 test.sql 脚本文件(由 \i /path/test.sql 执行),其代码执行取决于用户在初始提示后输入的内容。

例如,对于下面的代码,我希望回显一些文本并创建一个 table,但是回显的文本和 table 名称应该取决于传递的文本用户作为提示的输入:

\prompt 'What is your favourite color?' answer
IF ('blue' = :answer) THEN
    \echo 'It is blue! :) '
    CREATE TABLE blue;
ELSE
    \echo 'It is something else. :( '
    CREATE TABLE :answer;
END IF;

但是,一些错误阻止了它的工作:

myuser=# \i /home/myuser/test.sql
What is your favourite color?red
It is blue! :) 
psql:/home/myuser/test.sql:4: ERROR:  syntax error at or near "IF"
LINE 1: IF ('blue' = red) THEN
        ^
It is something else. :( 
psql:/home/myuser/test.sql:7: ERROR:  syntax error at or near "ELSE"
LINE 1: ELSE
        ^
psql:/home/myuser/test.sql:8: ERROR:  syntax error at or near "IF"
LINE 1: END IF;
            ^
myuser=# 

请注意,这与 https://dba.stackexchange.com/questions/207666/how-do-i-use-the-input-from-a-prompt-in-a-conditional-if. Also, I tried adapting it to follow the answer in Postgres syntax error at or near "IF" 中的要求不同,但随后我得到了更多错误,从 "syntax error at or near 'DO'" 开始。

我有办法完成这个任务吗?也就是说,每次用户使用 \i 执行 test.sql 文件时,系统都会提示用户,文件中代码的执行会根据用户通过提示输入的文本进行分支?

像这样:

SELECT :'answer' = 'blue' AS isblue \gset
\if :isblue
   ...
\endif