对于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
文件时,都会提示用户,并且文件中代码的执行取决于用户通过提示符输入的文本而分支?