在posgresql断言消息中包含参数

时间:2018-12-04 15:35:49

标签: sql postgresql assert

是否可以在PostgreSQL ASSERT消息中包含参数。

示例:

do $$ 
declare
    c integer;
begin
    c := (select count(*) from pg_database);
    assert c = 7, 'not 7!';
    assert c = 8, 'not 8!';
    assert c = 5, ('% not 5!' , c);
end;$$;

这有效:

assert c = 8, 'not 8!';

此断言:

assert c = 5, ('% not 5!' , c);

显示应显示的错误消息:

SQL Error [P0004]: ERROR: ("% not 5!",7)
Where: PL/pgSQL function inline_code_block line 7 at ASSERT
ERROR: ("% not 5!",7)
Where: PL/pgSQL function inline_code_block line 7 at ASSERT
ERROR: ("% not 5!",7)
Where: PL/pgSQL function inline_code_block line 7 at ASSERT

但变量不会替换文本中的%。

1 个答案:

答案 0 :(得分:2)

使用FORMAT

ASSERT c = 5, FORMAT('%s not 5!', c);