我已经做了几个星期的研究,并发现了一些建议,在postgres中使用Raise Notice功能来清理脚本,我喜欢这个想法。
CREATE OR REPLACE FUNCTION raisenoticefunction(in errorMessage text)
RETURNS void
AS
$$
BEGIN
RAISE NOTICE '%', errorMessage;
END;
$$
language plpgsql;
因此,不必通过所有脚本执行此操作(由于我们的编码标准经常出现):
DO LANGUAGE plpgsql $$
BEGIN
RAISE NOTICE 'Creating table customerOrders';
END $$;
我可以这样做,它更清晰,更易于阅读和输入:
SELECT raisenoticefunction('Creating table customerOrders');
问题是我想把这个函数放在tuple_only模式下。我不希望通过通知输出列标题或丢弃的行页脚。
我无法在命令行或配置文件中设置tuple_only模式,因为我不想为所有功能关闭它,因为有些人可能需要此信息。有谁知道如何将单个函数设置为tuple_only模式?
答案 0 :(得分:1)
你提到" tuple_only"让我怀疑你是在谈论psql功能,它是命令行界面,与PostgreSQL本身完全分开。
如果我猜对了,这就可以满足你的要求:
test=# \set QUIET \t \\ SELECT raisenoticefunction('foo'); \t \set QUIET off
NOTICE: foo
\t
..相当于\pset tuples_only
- 切换开/关
\set QUIET
..禁止来自psql的反馈
\\
..标记参数的结束并继续解析SQL命令