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

问题描述 投票:0回答:1

对于Postgres 10.10,这是我要完成的工作。我想要一个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你最喜欢什么颜色?红色它是蓝色的! :)psql:/home/myuser/test.sql:4:错误:“ IF”或附近的语法错误第1行:如果(“蓝色” =红色)则^这是另一回事。 :(psql:/home/myuser/test.sql:7:错误:“ ELSE”或附近的语法错误第1行:ELSE^psql:/home/myuser/test.sql:8:错误:“ IF”或附近的语法错误第1行:END IF;^myuser =#

注意,这与https://dba.stackexchange.com/questions/207666/how-do-i-use-the-input-from-a-prompt-in-a-conditional-if中的要求不同。另外,我尝试使其适应Postgres syntax error at or near "IF"中的答案,但随后我得到了更多的错误,从“ DO处或附近的语法错误”开始。

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

postgresql if-statement psql prompt
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.