我想将以下两个查询合并为一个:
SELECT pg_get_serial_sequence('purchase_orders', 'id'); SELECT setval('purchase_orders_id_seq', 30000);
但是,如果我将较高的SELECT放到setval的第一个参数中,则会得到:
SELECT setval(SELECT pg_get_serial_sequence('purchase_orders', 'id'), 30000); ERROR: syntax error at or near "SELECT" SQL state: 42601 Character: 15
如何将选择的结果(“ purchase_orders_id_seq”)传递给setval?
编辑:这样做的原因是;我想将其像一个函数一样使用,用户只需要输入表的名称和将要设置顺序的数字即可。
FUNCTION set_id_sequence(TEXT table_name, INTEGER sequence);
如果要将子查询结果作为函数参数传递,则需要在其周围加上括号:
SELECT setval((SELECT pg_get_serial_sequence('purchase_orders', 'id')), 30000);
但是在这种情况下,SELECT是多余的。您可以直接调用该函数:
SELECT setval(pg_get_serial_sequence('purchase_orders', 'id'), 30000);