PostgreSQL 8.1 中文文档(PostgreSQL 中国 制作) | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 36. PL/pgSQL - SQL 过程语言 | Fast Forward | Next |
利用RAISE语句报告信息以及抛出错误。
RAISE level 'format' [, expression [, ...]];
可能的级别有DEBUG(向服务器日志写信息), LOG(向服务器日志写信息,优先级更高),INFO, NOTICE和WARNING (把信息写到服务器日志以及转发到客户端应用,优先级逐步升高)和 EXCEPTION抛出一个错误(通常退出当前事务)。 某个优先级别的信息是报告给客户端还是写到服务器日志, 还是两个都做是由 log_min_messages 和 client_min_messages 配置变量控制的。 参阅 Chapter 17 获取更多细节。
在格式字串里,% 被下一个可选参数的外部表现形式代替。 要发出一个文本的 %,你要写 %%。 参数可以是简单的变量或者表达式,而格式必须是一个简单的字串文本。
在这个例子里,v_job_id的值将代替字串中的%:
RAISE NOTICE 'Calling cs_create_job(%)',v_job_id;
这个例子将会带着给出的错误信息退出事务:
RAISE EXCEPTION 'Inexistent ID --> %',user_id;
RAISE EXCEPTION 目前总是生成同样的 SQLSTATE 代码,P0001, 不管调用它的信息是什么。我们可以用 EXCEPTION ... WHEN RAISE_EXCEPTION THEN ... 捕获这样的例外,但是我们无法从一个 RAISE 里告诉另外一个相关的状态。