2025年9月25日: PostgreSQL 18 釋出!
支援版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: 開發
不支援版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0

44.9. 實用函式 #

plpy 模組還提供了以下函式:

plpy.debug(msg, **kwargs)
plpy.log(msg, **kwargs)
plpy.info(msg, **kwargs)
plpy.notice(msg, **kwargs)
plpy.warning(msg, **kwargs)
plpy.error(msg, **kwargs)
plpy.fatal(msg, **kwargs)

plpy.errorplpy.fatal 實際上會引發一個 Python 異常,如果該異常未被捕獲,它將傳播到呼叫查詢,導致當前事務或子事務被中止。raise plpy.Error(msg)raise plpy.Fatal(msg) 分別等同於呼叫 plpy.error(msg)plpy.fatal(msg),但 raise 形式不允許傳遞關鍵字引數。其他函式僅生成不同優先順序級別的訊息。訊息是否會報告給客戶端、寫入伺服器日誌或兩者都會,由 log_min_messagesclient_min_messages 配置變數控制。有關更多資訊,請參閱 第 19 章

msg 引數作為位置引數給出。為了向後相容,可以給出多個位置引數。在這種情況下,位置引數元組的字串表示形式將成為報告給客戶端的訊息。

接受以下僅關鍵字引數:

detail
hint
sqlstate
schema_name
table_name
column_name
datatype_name
constraint_name

作為僅關鍵字引數傳遞的物件被用於豐富報告給客戶端的訊息。例如:

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

=# 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.quote_literal(string)plpy.quote_nullable(string)plpy.quote_ident(string)。它們等同於 第 9.4 節 中描述的內建引用函式。它們在構建臨時查詢時很有用。來自 示例 41.1 的動態 SQL 的 PL/Python 等價物將是:

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

提交更正

如果您在文件中看到任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用 此表格 報告文件問題。