Postgresql Postgres:if-else条件取决于提示符,在名为via\i的.sql文件中

Postgresql Postgres:if-else条件取决于提示符,在名为via\i的.sql文件中,postgresql,if-statement,psql,prompt,Postgresql,If Statement,Psql,Prompt,对于10.10级的Postgres,以下是我想要实现的目标。我想让test.sql脚本文件由\I/path/test.sql执行,其代码执行取决于用户在初始提示后输入的内容 例如,对于下面的代码,我希望回显一些文本并创建一个表,但回显的文本和表名应取决于用户作为提示输入传递的文本: \prompt 'What is your favourite color?' answer IF ('blue' = :answer) THEN \echo 'It is blue! :) ' CR

对于10.10级的Postgres,以下是我想要实现的目标。我想让test.sql脚本文件由\I/path/test.sql执行,其代码执行取决于用户在初始提示后输入的内容

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

\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=# 请注意,这与中的问题不同。此外,我尝试调整它以跟随中的答案,但随后我只会得到更多错误,从“DO”或“DO”附近的语法错误开始

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

类似以下内容:

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

SQL中没有IF。但是psql提供了一个\if@a\u horse\u和\u no\u名称。唯一的问题是如何将answer==“blue”转换为布尔值以与\if一起使用。我只看到在中提到了这类问题,但这个答案在这里没有帮助