# 46.10.效用函数

这个plpy模块还提供了以下功能

plpy。调试(*味精*夸尔斯`)`
plpy。日志(*味精*夸尔斯`)`
plpy。信息(*味精*夸尔斯`)`
plpy。注意(*味精*夸尔斯`)`
plpy。警告(*味精*夸尔斯`)`
plpy。错误(*味精*夸尔斯`)`
plpy。致命的(*味精*夸尔斯`)`

plpy。错误plpy。致命的实际上会引发一个Python异常,如果未捕获,该异常会传播到调用查询,导致当前事务或子事务中止。举起手来。错误(*味精*)举起手来。致命的(*味精*)相当于打电话plpy。错误(*味精*)plpy。致命的(*味精*),但提升表单不允许传递关键字参数。其他功能只生成不同优先级的消息。特定优先级的消息是报告给客户端、写入服务器日志,还是两者都由日志_闵_信息客户_闵_信息配置变量。看见第20章了解更多信息。

这个*味精*参数作为位置参数给出。为了向后兼容,可以给出多个位置参数。在这种情况下,位置参数元组的字符串表示将成为报告给客户端的消息。

只接受以下关键字参数:

细节
暗示
sqlstate
模式名称
表2\u名称
列名
数据类型名称
你的名字

作为纯关键字参数传递的对象的字符串表示用于丰富报告给客户端的消息。例如:

CREATE FUNCTION raise_custom_exception() RETURNS void AS $$
plpy.error("custom exception message",
           detail="some info about exception",
           hint="hint for users")
$$ LANGUAGE plpythonu;

=# SELECT raise_custom_exception();
ERROR:  plpy.Error: custom exception message
DETAIL:  some info about exception
HINT:  hint for users
CONTEXT:  Traceback (most recent call last):
  PL/Python function "raise_custom_exception", line 4, in <module>
    hint="hint for users")
PL/Python function "raise_custom_exception"

另一组实用函数是plpy。引用字面意思(*一串*), plpy。quote_nullable(*一串*)plpy。引述(*一串*)。它们相当于中所述的内置报价功能第9.4节。它们在构造特殊查询时非常有用。PL/Python的动态SQL等效于例43.1将是:

plpy.execute("UPDATE tbl SET %s = %s WHERE key = %s" % (
    plpy.quote_ident(colname),
    plpy.quote_nullable(newvalue),
    plpy.quote_literal(keyvalue)))