在 psql 中使用 \set 设置变量

setting variables using \set in psql

我正在尝试在包含 JSON 的 psql 控制台中设置变量。 我是这样做的

mydb=# \set cfg '{"base":"some url","remoteIP":"ip"}';

然后我尝试调用查询并传递这个变量

mydb=# select exec_search(:'cfg','Field');

但是如果变成这样而不是执行

mydb'#

当按 enter 或尝试添加引号时,我无法执行查询。我必须退出终端。

mydb'#
mydb'#
mydb'# '
mydb(#

有什么问题?

您的第一个错误是 \set 命令末尾的分号。

psql 命令(以反斜杠开头的命令)不是以分号结束,而是以行尾结束。

所以你最终在变量中多了一个分号,这将导致无效的JSON。

我无法用你问题中的数据重现你的第二个问题。如果您输入包含不平衡单引号的行,您会收到此提示。

要退出,请按 Ctrl+C