postgresql – 如何引用传入psql的命名参数?
psql有一个用于传递命名参数的构造:
psql -v name='value' 然后可以在脚本中引用它: SELECT :name; 这将给出结果 ?column? ---------- value (1 row) 在开发过程中,我需要相当频繁地删除并重新创建数据库的副本,所以我正在尝试自动化该过程.所以我需要运行一个强制断开所有用户然后删除数据库的查询.但是这个操作的数据库会有所不同,因此数据库名称必须是一个参数. 问题是断开用户的查询需要一个字符串(WHERE pg_stat_activity.datname =’dbname’),丢弃的查询需要一个不带引号的标记(DROP DATABASE IF EXISTS dbname). (对不起.不知道该怎么称呼这种令牌.) 我可以在DROP查询中使用不带引号的命名参数,但在断开连接查询中引用命名参数会导致参数不被展开.即,我会得到字符串’:name’而不是字符串’value’. 有没有办法将不带引号的值转换为字符串或将字符串转换为DROP查询的不带引号的标记?我可以通过将断开连接和DROP查询放在单独的脚本中并将带有引号的参数传递给断开连接并且不带引号到DROP来解决它,但我更喜欢它们在同一个脚本中,因为它们实际上是两个步骤在一个过程中.
尝试:
WHERE pg_stat_activity.datname = :'name' 请注意单引号前的冒号位置.优秀的手册填写了细节here:
大胆强调我的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |