Rai*_*ner 4 postgresql variables psql
在 Postgres 控制台(PSQL)上,我尝试编写一个简单的“批量”测试:
\set oid
\set username 'john'
\set emailadr 'john@mailbox.net'
\set password 'jjjj'
INSERT INTO :oid SELECT auc_user_insert(:'username', :'emailadr', :'password');
SELECT auc_user_select(:oid);
SELECT auc_user_delete(:oid);
Run Code Online (Sandbox Code Playgroud)
auc_user_insert、auc_user_select和auc_user_delete是特定于应用程序的 Postgres 函数,并且对每个自身都可以正常工作(在查询工具内)。该insert函数返回一个 bigint 作为唯一 id,我想将其分配给变量oid以便在下一行中使用。
但在 PSQL 语句中INTO :oid我收到错误
ERROR: Relation 'bigint' doesn't exist
Run Code Online (Sandbox Code Playgroud)
有什么问题以及使用这样的变量的正确方法是什么?感谢您的任何提示!
假设 的目的INSERT INTO是影响:oid变量而不是将选择的结果插入表中,那么您需要这样:
SELECT auc_user_insert(:'username', :'emailadr', :'password') AS oid;
\gset
SELECT auc_user_select(:oid);
SELECT auc_user_delete(:oid);
Run Code Online (Sandbox Code Playgroud)
\gset是自 psql 9.3 以来的新元命令
如果您有旧版本,则模拟它会困难得多。
联机帮助页中的说明:
\gset [ 前缀 ]
将当前查询输入缓冲区发送到服务器并将查询的输出存储到 psql 变量中(请参阅变量)。要执行的查询必须恰好返回一行。行的每一列都存储在一个单独的变量中,命名与列相同