{"kind": "language", "major": "18", "item": {"slug": "pltclu", "name": "pltclu", "name_zh": "", "category": "PL/Tcl", "summary": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "aliases": [], "content_hash": "23882b56cf7f231ace14eea179608361bd52c2b7ce35da0120e369a7887b9b1e", "versions": {"10": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/10/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/10/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/10/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/10/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/10/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/10/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/10/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/10/pltcl-overview.html", "label": "pltcl-overview"}, {"url": "/docs/10/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/10/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/10/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "label": "10.23", "major": "10", "channel": "historical", "revision": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9", "source_sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9", "catalog_fingerprint": "691be281b476dde4374d7f805b2bacc2e75bdef40f1e9d3d42e91f97fe95cfd0"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, {"url": "/docs/10/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 10 English manual", "sha256": "2df6e5d2ee2a445d19335fe73df55bcd9f135eedd9f243c8f6ec2cade7d0bff0"}], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/10/pltcl.html#PLTCL-OVERVIEW", "anchor": "PLTCL-OVERVIEW", "locale": "zh-Hans", "version": "10", "build_id": 63, "page_key": "pltcl.html", "extraction": "concept-introduction", "source_hash": "bfbd5a02c087c790e618ec5f9aea0cf990daee551009cb9f95526fc4e5bce2b1", "fragment_sha256": "f9aabfc49c502634baefc4ccf8f5eb57041bf4fc5445d9d64f81c2a667cddc09", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "snapshot:sha256:62997ea80516ad012fbf6359de33f3b016b54c47e2df76e75606116b4baaf8e5", "translated_from_revision": null}, "body_sha256": "aaad0077601fc0823c38ad348439405b57d36ca71ec7513e7c4039aefb3a52d6", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, "facts_zh": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\n/*\n * Currently, all the interesting stuff is done by CREATE LANGUAGE.\n * Later we will probably \"dumb down\" that command and put more of the\n * knowledge into this script.\n */\n\nCREATE PROCEDURAL LANGUAGE pltclu;\n\nCOMMENT ON PROCEDURAL LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "center_zh": {"title": "pltclu", "locale": "zh-Hans", "source": {"key": "pltclu", "locale": "zh-Hans", "version": "10", "text_hash": "425208c84d894186662d545fe1bc06c4b632629d8cad53f8d65c278930fd1512", "collection": "language", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, "payload": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/10/pltcl.html#PLTCL-OVERVIEW", "anchor": "PLTCL-OVERVIEW", "locale": "zh-Hans", "version": "10", "build_id": 63, "page_key": "pltcl.html", "extraction": "concept-introduction", "source_hash": "bfbd5a02c087c790e618ec5f9aea0cf990daee551009cb9f95526fc4e5bce2b1", "fragment_sha256": "f9aabfc49c502634baefc4ccf8f5eb57041bf4fc5445d9d64f81c2a667cddc09", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "snapshot:sha256:62997ea80516ad012fbf6359de33f3b016b54c47e2df76e75606116b4baaf8e5", "translated_from_revision": null}, "body_sha256": "aaad0077601fc0823c38ad348439405b57d36ca71ec7513e7c4039aefb3a52d6", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\n/*\n * Currently, all the interesting stuff is done by CREATE LANGUAGE.\n * Later we will probably \"dumb down\" that command and put more of the\n * knowledge into this script.\n */\n\nCREATE PROCEDURAL LANGUAGE pltclu;\n\nCOMMENT ON PROCEDURAL LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span class=\"emphasis\"><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code class=\"function\">elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span class=\"productname\">PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span class=\"application\">PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code class=\"literal\">PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span class=\"emphasis\"><em>\u5982\u679c\u4f7f\u7528 <span class=\"application\">PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span class=\"application\">PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/10/pltcl.html#PLTCL-OVERVIEW\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "summary": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "version": "10", "link_map": {"/zh/docs/10/pltcl.html#PLTCL-OVERVIEW": "/docs/10/pltcl.html#PLTCL-OVERVIEW"}, "body_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/10/pltcl.html#PLTCL-OVERVIEW\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>", "body_sha256": "08d14c39f276e127667a28dd64c532c21acb9c0b9566772e5ffbb6a10c4be31c", "content_hash": "425208c84d894186662d545fe1bc06c4b632629d8cad53f8d65c278930fd1512", "source_database": "center", "source_revision": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, "signature": "", "tables_zh": [], "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002"], "manual_html": "", "manual_path": "/docs/10/pltcl-overview.html", "sections_zh": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\n/*\n * Currently, all the interesting stuff is done by CREATE LANGUAGE.\n * Later we will probably \"dumb down\" that command and put more of the\n * knowledge into this script.\n */\n\nCREATE PROCEDURAL LANGUAGE pltclu;\n\nCOMMENT ON PROCEDURAL LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "localization": {"status": "complete", "sources": [{"url": "/docs/10/pltcl-config.html", "method": "same-major semantic node", "sha256": "80c8a85d8f262ea873d482ac8d30d1e2d7df811c50f1b2ad7607b8e5f2c1304f", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/10/pltcl-data.html", "method": "same-major semantic node", "sha256": "7eaf9f29b9c1f1687a84ff10631b1c12ec019b25b85184036dd05ba1a7d0bf35", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/10/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "e9c0b8faba119abb3b2c5f598f84f63b46d823ef06d5ce03a3406a9cd38d6999", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/10/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "881b42137fb432b3af2c1a47389ebc0f12db0807c789f048236924ebbe6c7956", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/10/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "c17755c912919bb597333dfa628526056f1ceb274eb2596079b13f19aab9197a", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/10/pltcl-functions.html", "method": "same-major semantic node", "sha256": "e8d8c3ad34c0980b977e482b09f7eefe09a3735a732062de753f94ad23b1a0b9", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/10/pltcl-global.html", "method": "same-major semantic node", "sha256": "082515d98f082fdb76756a4ffa6714657dfa32cc522f77845be051545f2c630f", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/10/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "dceb3117d77a15e6494782f1515a39f3d7179b0340a4eb12d50ce4c64df973be", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/10/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "ed444410b351fa5f015e7e339e34ae01b97b177fffecbaf2d3a57feba13bff24", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/10/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "b01e1db4be116982bd60d022040bbfd094c3a86814337339848c71493cf75eb0", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/10/description/0": "PL/TclU untrusted procedural language", "/versions/10/facts/0/label": "Kind", "/versions/10/facts/0/value": "Bundled procedural-language variant", "/versions/10/facts/1/label": "Family", "/versions/10/facts/2/label": "Trusted", "/versions/10/facts/3/label": "Handler", "/versions/10/facts/4/label": "Library", "/versions/10/facts/5/label": "Default version", "/versions/10/facts/6/label": "Module pathname", "/versions/10/facts/7/label": "Comment", "/versions/10/facts/7/value": "PL/TclU untrusted procedural language", "/versions/10/related/0/label": "pltcl-config", "/versions/10/related/1/label": "pltcl-data", "/versions/10/related/2/label": "pltcl-dbaccess", "/versions/10/related/3/label": "pltcl-error-handling", "/versions/10/related/4/label": "pltcl-event-trigger", "/versions/10/related/5/label": "pltcl-functions", "/versions/10/related/6/label": "pltcl-global", "/versions/10/related/8/label": "pltcl-procnames", "/versions/10/related/9/label": "pltcl-subtransactions", "/versions/10/related/10/label": "pltcl-trigger", "/versions/10/sections/0/title": "Installation definition from the matching source archive", "/versions/10/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "8b2d577789d85c1dfdae68d7c920c9640fdd62b8e5aff2c00777bc799d6641b8", "canonical_center_text_hash": "425208c84d894186662d545fe1bc06c4b632629d8cad53f8d65c278930fd1512"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "b7c8527b81a5f6eb6b04ed1ad0d41b1f8a44eec84a754c5289969ece93996ef1"}, "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/10/pltcl.html#PLTCL-OVERVIEW\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "11": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/11/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/11/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/11/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/11/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/11/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/11/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/11/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/11/pltcl-overview.html", "label": "pltcl-overview"}, {"url": "/docs/11/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/11/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/11/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/11/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "label": "11.22", "major": "11", "channel": "historical", "revision": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0", "source_sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0", "catalog_fingerprint": "8f21f4444b7f68923f4762af0eb7937fa2907026e91249483e79050de012c901"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, {"url": "/docs/11/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 11 English manual", "sha256": "23152ba386b19fe4e6e11d2b20933742b23ee8474c9300b9d8abc3cfd32ed400"}], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/11/pltcl.html#PLTCL-OVERVIEW", "anchor": "PLTCL-OVERVIEW", "locale": "zh-Hans", "version": "11", "build_id": 64, "page_key": "pltcl.html", "extraction": "concept-introduction", "source_hash": "bc9962f7abd1d5f01afe3956f9723f4a24647389d02a248abdfccfe73d93f96e", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "snapshot:sha256:ef5c7bc074acae9795db16e6b7482aea3b222bd4bcce0f76831332b97a21e8a1", "translated_from_revision": null}, "body_sha256": "c03be11ef7216ef2e316978d5bdf662053e3105f90e2285d5692496b2b38ec7e", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, "facts_zh": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\n/*\n * Currently, all the interesting stuff is done by CREATE LANGUAGE.\n * Later we will probably \"dumb down\" that command and put more of the\n * knowledge into this script.\n */\n\nCREATE PROCEDURAL LANGUAGE pltclu;\n\nCOMMENT ON PROCEDURAL LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "center_zh": {"title": "pltclu", "locale": "zh-Hans", "source": {"key": "pltclu", "locale": "zh-Hans", "version": "11", "text_hash": "3c565f96e48eea851b7b8d29336bbb93387798e5bbf11128607e7f905572751e", "collection": "language", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, "payload": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/11/pltcl.html#PLTCL-OVERVIEW", "anchor": "PLTCL-OVERVIEW", "locale": "zh-Hans", "version": "11", "build_id": 64, "page_key": "pltcl.html", "extraction": "concept-introduction", "source_hash": "bc9962f7abd1d5f01afe3956f9723f4a24647389d02a248abdfccfe73d93f96e", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "snapshot:sha256:ef5c7bc074acae9795db16e6b7482aea3b222bd4bcce0f76831332b97a21e8a1", "translated_from_revision": null}, "body_sha256": "c03be11ef7216ef2e316978d5bdf662053e3105f90e2285d5692496b2b38ec7e", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\n/*\n * Currently, all the interesting stuff is done by CREATE LANGUAGE.\n * Later we will probably \"dumb down\" that command and put more of the\n * knowledge into this script.\n */\n\nCREATE PROCEDURAL LANGUAGE pltclu;\n\nCOMMENT ON PROCEDURAL LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span class=\"emphasis\"><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code class=\"function\">elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span class=\"productname\">PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span class=\"application\">PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code class=\"literal\">PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span class=\"emphasis\"><em>\u5982\u679c\u4f7f\u7528 <span class=\"application\">PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span class=\"application\">PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/11/pltcl.html#PLTCL-OVERVIEW\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "summary": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "version": "11", "link_map": {"/zh/docs/11/pltcl.html#PLTCL-OVERVIEW": "/docs/11/pltcl.html#PLTCL-OVERVIEW"}, "body_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/11/pltcl.html#PLTCL-OVERVIEW\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>", "body_sha256": "03b8ec79f16f74ea9b48d7d6a8d28c52f5ea4929834a853c176d2b09fe488ee5", "content_hash": "3c565f96e48eea851b7b8d29336bbb93387798e5bbf11128607e7f905572751e", "source_database": "center", "source_revision": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, "signature": "", "tables_zh": [], "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002"], "manual_html": "", "manual_path": "/docs/11/pltcl-overview.html", "sections_zh": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\n/*\n * Currently, all the interesting stuff is done by CREATE LANGUAGE.\n * Later we will probably \"dumb down\" that command and put more of the\n * knowledge into this script.\n */\n\nCREATE PROCEDURAL LANGUAGE pltclu;\n\nCOMMENT ON PROCEDURAL LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "localization": {"status": "complete", "sources": [{"url": "/docs/11/pltcl-config.html", "method": "same-major semantic node", "sha256": "0ad2a6cbc35762bcaeff4376cd0e0925debabdc6da42f15ca709f11fde6002ce", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/11/pltcl-data.html", "method": "same-major semantic node", "sha256": "46aef91362643dca9c121d8b898a42e03ffc1d5bbd050571880fb2eec6b90853", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/11/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "0c9fd980431782c106840ad5cf20bca4b8d75cb4eaa9ee46ea0fdf33d41ec415", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/11/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "383b0a1a22f68dfc9b5fc3588c8be6005bb35cc4bde0c7c7227ef105f3775c80", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/11/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "7ad8d96bfdcba409c38bca6621d1e99135f713bb0c04e16f3e85c7d8795ac61a", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/11/pltcl-functions.html", "method": "same-major semantic node", "sha256": "bc77a8ccc437395d171951aa6f894c7acffacbce865a28cd9e480e441f6f6cff", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/11/pltcl-global.html", "method": "same-major semantic node", "sha256": "cea15a633121e1cfd620f78542107d9aa2dd6389fd35a430f90e0e42a2541a1d", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/11/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "b8d4ccc4a96d17486ee7c7411a2e44a78d61c7ab8800bcc044a48b31738bf3d8", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/11/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "de6f2d981fdad73db307839bfe81a86effda97ae5224f295d17d00e7d9546562", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/11/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "439e473b95d162fe6f96b27dbd50214830f48f77246f77d846d89b617299c8a9", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/11/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "4fca18e6c77983617ec9dc9ec1e065d15372044a220dfe413a571bc293697338", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/11/description/0": "PL/TclU untrusted procedural language", "/versions/11/facts/0/label": "Kind", "/versions/11/facts/0/value": "Bundled procedural-language variant", "/versions/11/facts/1/label": "Family", "/versions/11/facts/2/label": "Trusted", "/versions/11/facts/3/label": "Handler", "/versions/11/facts/4/label": "Library", "/versions/11/facts/5/label": "Default version", "/versions/11/facts/6/label": "Module pathname", "/versions/11/facts/7/label": "Comment", "/versions/11/facts/7/value": "PL/TclU untrusted procedural language", "/versions/11/related/0/label": "pltcl-config", "/versions/11/related/1/label": "pltcl-data", "/versions/11/related/2/label": "pltcl-dbaccess", "/versions/11/related/3/label": "pltcl-error-handling", "/versions/11/related/4/label": "pltcl-event-trigger", "/versions/11/related/5/label": "pltcl-functions", "/versions/11/related/6/label": "pltcl-global", "/versions/11/related/8/label": "pltcl-procnames", "/versions/11/related/9/label": "pltcl-subtransactions", "/versions/11/related/10/label": "pltcl-transactions", "/versions/11/related/11/label": "pltcl-trigger", "/versions/11/sections/0/title": "Installation definition from the matching source archive", "/versions/11/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "450d272ff7b7c19b4c8c461dee9be8bc795f5e3af62476bfc130c0781e7ba21f", "canonical_center_text_hash": "3c565f96e48eea851b7b8d29336bbb93387798e5bbf11128607e7f905572751e"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "b7c8527b81a5f6eb6b04ed1ad0d41b1f8a44eec84a754c5289969ece93996ef1"}, "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/11/pltcl.html#PLTCL-OVERVIEW\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "12": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/12/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/12/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/12/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/12/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/12/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/12/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/12/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/12/pltcl-overview.html", "label": "pltcl-overview"}, {"url": "/docs/12/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/12/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/12/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/12/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "label": "12.22", "major": "12", "channel": "historical", "revision": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b", "source_sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b", "catalog_fingerprint": "9f857f4ee4875f9c7de6bfc9df4b757dec8b3a0bb88eadb519c7bd267bd56149"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, {"url": "/docs/12/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 12 English manual", "sha256": "7b095ed70fc9f919b487d6d1c0db5cc886c3d2df0d24a546a51705e1efe03eb1"}], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/12/pltcl.html#PLTCL-OVERVIEW", "anchor": "PLTCL-OVERVIEW", "locale": "zh-Hans", "version": "12", "build_id": 65, "page_key": "pltcl.html", "extraction": "concept-introduction", "source_hash": "c440b8c69ecd24e3a6574a1bcf89ed7fe430779741c089d0faac22abf3b99d5f", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "snapshot:sha256:86d2ff781f93e1de17122ebc514d5e64fcb63fed15941f496d7e146c6dcc7a49", "translated_from_revision": null}, "body_sha256": "c6afe60fa2e4dfc59ed5331444a47fd4c167905310c6bec1557911d086ab5ac0", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, "facts_zh": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\n/*\n * Currently, all the interesting stuff is done by CREATE LANGUAGE.\n * Later we will probably \"dumb down\" that command and put more of the\n * knowledge into this script.\n */\n\nCREATE LANGUAGE pltclu;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "center_zh": {"title": "pltclu", "locale": "zh-Hans", "source": {"key": "pltclu", "locale": "zh-Hans", "version": "12", "text_hash": "be8c59da7a6599aad5f107da14a91bf3f59c5607c56fe0842d31a7f30018c1b1", "collection": "language", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, "payload": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/12/pltcl.html#PLTCL-OVERVIEW", "anchor": "PLTCL-OVERVIEW", "locale": "zh-Hans", "version": "12", "build_id": 65, "page_key": "pltcl.html", "extraction": "concept-introduction", "source_hash": "c440b8c69ecd24e3a6574a1bcf89ed7fe430779741c089d0faac22abf3b99d5f", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "snapshot:sha256:86d2ff781f93e1de17122ebc514d5e64fcb63fed15941f496d7e146c6dcc7a49", "translated_from_revision": null}, "body_sha256": "c6afe60fa2e4dfc59ed5331444a47fd4c167905310c6bec1557911d086ab5ac0", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\n/*\n * Currently, all the interesting stuff is done by CREATE LANGUAGE.\n * Later we will probably \"dumb down\" that command and put more of the\n * knowledge into this script.\n */\n\nCREATE LANGUAGE pltclu;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span class=\"emphasis\"><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code class=\"function\">elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span class=\"productname\">PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span class=\"application\">PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code class=\"literal\">PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span class=\"emphasis\"><em>\u5982\u679c\u4f7f\u7528 <span class=\"application\">PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span class=\"application\">PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/12/pltcl.html#PLTCL-OVERVIEW\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "summary": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "version": "12", "link_map": {"/zh/docs/12/pltcl.html#PLTCL-OVERVIEW": "/docs/12/pltcl.html#PLTCL-OVERVIEW"}, "body_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/12/pltcl.html#PLTCL-OVERVIEW\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>", "body_sha256": "7caaa5e16619499b0f69ca8386bcb2a2835f8e49f38f67dc47197ce3f9705b74", "content_hash": "be8c59da7a6599aad5f107da14a91bf3f59c5607c56fe0842d31a7f30018c1b1", "source_database": "center", "source_revision": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, "signature": "", "tables_zh": [], "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002"], "manual_html": "", "manual_path": "/docs/12/pltcl-overview.html", "sections_zh": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\n/*\n * Currently, all the interesting stuff is done by CREATE LANGUAGE.\n * Later we will probably \"dumb down\" that command and put more of the\n * knowledge into this script.\n */\n\nCREATE LANGUAGE pltclu;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "localization": {"status": "complete", "sources": [{"url": "/docs/12/pltcl-config.html", "method": "same-major semantic node", "sha256": "42804a54df6d091d162e901fb90d5780ddace7ee40351c1a3c4e42bf66d4bf74", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/12/pltcl-data.html", "method": "same-major semantic node", "sha256": "71cd9cf457212262530081f1ae617c8188aaf976d551b99a6344f9c8fd3860fb", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/12/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "bfbc88378eb5064aa9535874371967036437c92c34955af4d8d044ac021c3daa", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/12/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "f6d87b6cda246ca5cf87bcfb452ed2f64ef931cfe07c25a8b782f09d1c844c41", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/12/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "423da3660cd8bb08a1dc6293dacfa2a19822ad0f571ff6ab085503e875c6f033", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/12/pltcl-functions.html", "method": "same-major semantic node", "sha256": "f35a1378003af85664c2c9134c38177c20146a2805c0971ba07d04a01e19e267", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/12/pltcl-global.html", "method": "same-major semantic node", "sha256": "6d15d3e67703c5b3219b4a9cb2c81f37323c4d966f8dbfe9b36c8ef328d326b6", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/12/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "10e6bdc1d04a3d7f78f5d0a4e15466a777caaa1c2257e990abeb0e2aef46316b", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/12/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "49adf76308f74977a8dccdab9402837fa509bd6a9531b002f0f06fad2f3c8d46", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/12/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "0366fd4dc660b5dccdd04eb3969bd45c5778760418e4fe62d4626bd410cace31", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/12/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "227e0870e14893d597296fc4524549931ecbda9f1fd855ec760caab79f8b8e76", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/12/description/0": "PL/TclU untrusted procedural language", "/versions/12/facts/0/label": "Kind", "/versions/12/facts/0/value": "Bundled procedural-language variant", "/versions/12/facts/1/label": "Family", "/versions/12/facts/2/label": "Trusted", "/versions/12/facts/3/label": "Handler", "/versions/12/facts/4/label": "Library", "/versions/12/facts/5/label": "Default version", "/versions/12/facts/6/label": "Module pathname", "/versions/12/facts/7/label": "Comment", "/versions/12/facts/7/value": "PL/TclU untrusted procedural language", "/versions/12/related/0/label": "pltcl-config", "/versions/12/related/1/label": "pltcl-data", "/versions/12/related/2/label": "pltcl-dbaccess", "/versions/12/related/3/label": "pltcl-error-handling", "/versions/12/related/4/label": "pltcl-event-trigger", "/versions/12/related/5/label": "pltcl-functions", "/versions/12/related/6/label": "pltcl-global", "/versions/12/related/8/label": "pltcl-procnames", "/versions/12/related/9/label": "pltcl-subtransactions", "/versions/12/related/10/label": "pltcl-transactions", "/versions/12/related/11/label": "pltcl-trigger", "/versions/12/sections/0/title": "Installation definition from the matching source archive", "/versions/12/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "c755f3e70ea37518ac058006d547fbf47bc1e40db86bf54088a3f57a7e58bc7f", "canonical_center_text_hash": "be8c59da7a6599aad5f107da14a91bf3f59c5607c56fe0842d31a7f30018c1b1"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "1de536836eae7f15e28a8773f18835663fb793c469518c53136e6d59520c32bd"}, "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/12/pltcl.html#PLTCL-OVERVIEW\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "13": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/13/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/13/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/13/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/13/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/13/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/13/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/13/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/13/pltcl-overview.html", "label": "pltcl-overview"}, {"url": "/docs/13/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/13/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/13/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/13/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "label": "13.23", "major": "13", "channel": "historical", "revision": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6", "source_sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6", "catalog_fingerprint": "c7015c845255c9d721c547c8ab9ef37825d332588c9691d982e6906b7d571002"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, {"url": "/docs/13/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 13 English manual", "sha256": "7bae4281b807e48ee328e686b45186fa1e4cb470291e7ae6a84122a901424925"}], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/13/pltcl.html#PLTCL-OVERVIEW", "anchor": "PLTCL-OVERVIEW", "locale": "zh-Hans", "version": "13", "build_id": 66, "page_key": "pltcl.html", "extraction": "concept-introduction", "source_hash": "f2102f60508d77d54bff360891a375ed5c8667f1cbe0b6df9d14df4c8950e978", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "snapshot:sha256:a13a825c39f0268ef1cfe9137e283e38d0da73b2d7894f0733c7b26372a4f6a4", "translated_from_revision": null}, "body_sha256": "eeb988198b99663e8f3448a8264742865b3a96d74339bb13a83740d18008e373", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, "facts_zh": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "center_zh": {"title": "pltclu", "locale": "zh-Hans", "source": {"key": "pltclu", "locale": "zh-Hans", "version": "13", "text_hash": "d7d9474568a302b5bca84181880fe5b466e0649b9bdce8a09003a956e8b262d6", "collection": "language", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, "payload": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/13/pltcl.html#PLTCL-OVERVIEW", "anchor": "PLTCL-OVERVIEW", "locale": "zh-Hans", "version": "13", "build_id": 66, "page_key": "pltcl.html", "extraction": "concept-introduction", "source_hash": "f2102f60508d77d54bff360891a375ed5c8667f1cbe0b6df9d14df4c8950e978", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "snapshot:sha256:a13a825c39f0268ef1cfe9137e283e38d0da73b2d7894f0733c7b26372a4f6a4", "translated_from_revision": null}, "body_sha256": "eeb988198b99663e8f3448a8264742865b3a96d74339bb13a83740d18008e373", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span class=\"emphasis\"><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code class=\"function\">elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span class=\"productname\">PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span class=\"application\">PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code class=\"literal\">PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span class=\"emphasis\"><em>\u5982\u679c\u4f7f\u7528 <span class=\"application\">PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span class=\"application\">PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/13/pltcl.html#PLTCL-OVERVIEW\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "summary": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "version": "13", "link_map": {"/zh/docs/13/pltcl.html#PLTCL-OVERVIEW": "/docs/13/pltcl.html#PLTCL-OVERVIEW"}, "body_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/13/pltcl.html#PLTCL-OVERVIEW\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>", "body_sha256": "d2bb21856a6dc6dd423bbee7610d78ed47694949bc87737565b676b10bc46e12", "content_hash": "d7d9474568a302b5bca84181880fe5b466e0649b9bdce8a09003a956e8b262d6", "source_database": "center", "source_revision": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, "signature": "", "tables_zh": [], "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002"], "manual_html": "", "manual_path": "/docs/13/pltcl-overview.html", "sections_zh": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "localization": {"status": "complete", "sources": [{"url": "/docs/13/pltcl-config.html", "method": "same-major semantic node", "sha256": "93a7ff39625f2707eee1274ee729a1538dfe07b2766e49bd88b9653e80fd9471", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/13/pltcl-data.html", "method": "same-major semantic node", "sha256": "50233512d530c3994405f4f1617b41f4c79825c5bb8f68085f2937d2f1be8319", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/13/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "8a96490189c653f7f7b140c1eebacb9f0bec573708461d21f21d872d33735e0d", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/13/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "b44dc4139080d78fdeeac741b0da453a200550b9998385c132ccbbbe2419e2b2", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/13/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "5c3507309f9cf9e437795a81f6fa09040a6031cda99a89e50117a5072d84d454", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/13/pltcl-functions.html", "method": "same-major semantic node", "sha256": "39167ca770f74ab3aec006346c4d4b5a6e9564b97104b552fc20e7896b8f17f7", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/13/pltcl-global.html", "method": "same-major semantic node", "sha256": "ab1932f1c1a4f3286272c54712ee146d72c2e6b5b5876202427ab426bcbfcde5", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/13/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "1d400c746c94120f331d846a0cbd6a1353bd6e9b2483bf866954b9fba3fb1273", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/13/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "47ed98fe5af8ad2c430f7aac8e3ea1c05095c4e7e5cc9b8a0fa76059fdd0737e", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/13/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "a858844e1799afd6477bb5f09869925742458c9330c35cc25455b18c7c94454f", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/13/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "9a2655f3ae349a3d2881e9221ca357c296f97b7e70c9bfa1cdb2f861e205d8fb", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/13/description/0": "PL/TclU untrusted procedural language", "/versions/13/facts/0/label": "Kind", "/versions/13/facts/0/value": "Bundled procedural-language variant", "/versions/13/facts/1/label": "Family", "/versions/13/facts/2/label": "Trusted", "/versions/13/facts/3/label": "Handler", "/versions/13/facts/4/label": "Library", "/versions/13/facts/5/label": "Default version", "/versions/13/facts/6/label": "Module pathname", "/versions/13/facts/7/label": "Comment", "/versions/13/facts/7/value": "PL/TclU untrusted procedural language", "/versions/13/related/0/label": "pltcl-config", "/versions/13/related/1/label": "pltcl-data", "/versions/13/related/2/label": "pltcl-dbaccess", "/versions/13/related/3/label": "pltcl-error-handling", "/versions/13/related/4/label": "pltcl-event-trigger", "/versions/13/related/5/label": "pltcl-functions", "/versions/13/related/6/label": "pltcl-global", "/versions/13/related/8/label": "pltcl-procnames", "/versions/13/related/9/label": "pltcl-subtransactions", "/versions/13/related/10/label": "pltcl-transactions", "/versions/13/related/11/label": "pltcl-trigger", "/versions/13/sections/0/title": "Installation definition from the matching source archive", "/versions/13/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "6bbe54397481c35dfecd268a6ef7621f36287bac93c8132d4c7c7f435a68047d", "canonical_center_text_hash": "d7d9474568a302b5bca84181880fe5b466e0649b9bdce8a09003a956e8b262d6"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "81990a8e4dd323fd70a2669dcbd33a9d74d250bc7a965790dee9d96b3f823d0c"}, "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/13/pltcl.html#PLTCL-OVERVIEW\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "14": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/14/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/14/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/14/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/14/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/14/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/14/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/14/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/14/pltcl-overview.html", "label": "pltcl-overview"}, {"url": "/docs/14/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/14/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/14/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/14/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "label": "14.24", "major": "14", "channel": "stable", "revision": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897", "source_sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897", "catalog_fingerprint": "b272e6a82e4c46efda81c3a6a4cdf7de6a83dfff7f02f226a392fbe9acdd3adb"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, {"url": "/docs/14/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 14 English manual", "sha256": "746a3b05d82051248f2cfcab557cd47e8a9a206702a4c93f1bc1ececffb76e28"}], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/14/pltcl.html#PLTCL-OVERVIEW", "anchor": "PLTCL-OVERVIEW", "locale": "zh-Hans", "version": "14", "build_id": 99, "page_key": "pltcl.html", "extraction": "concept-introduction", "source_hash": "5db4b5c65ad8548a83c961a3e08c65daebdecbfb585aa13064820478b53f8748", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:87e6aa4fd6e1ec85c5f4a6de4f5647cfd9e5de734ca2c266d32b6d6192c662ef", "translated_from_revision": null}, "body_sha256": "c18640a6e3a03f8bbd941e879fa64f47a8b0f988fc0ca8cc0f97a976025517e1", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, "facts_zh": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "center_zh": {"title": "pltclu", "locale": "zh-Hans", "source": {"key": "pltclu", "locale": "zh-Hans", "version": "14", "text_hash": "f8dddaacbb1bbee90122cb22b8daa7778becaa936dd77c67e7b82394509b1d5a", "collection": "language", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, "payload": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/14/pltcl.html#PLTCL-OVERVIEW", "anchor": "PLTCL-OVERVIEW", "locale": "zh-Hans", "version": "14", "build_id": 99, "page_key": "pltcl.html", "extraction": "concept-introduction", "source_hash": "5db4b5c65ad8548a83c961a3e08c65daebdecbfb585aa13064820478b53f8748", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:87e6aa4fd6e1ec85c5f4a6de4f5647cfd9e5de734ca2c266d32b6d6192c662ef", "translated_from_revision": null}, "body_sha256": "c18640a6e3a03f8bbd941e879fa64f47a8b0f988fc0ca8cc0f97a976025517e1", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span class=\"emphasis\"><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code class=\"function\">elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span class=\"productname\">PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span class=\"application\">PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code class=\"literal\">PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span class=\"emphasis\"><em>\u5982\u679c\u4f7f\u7528 <span class=\"application\">PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span class=\"application\">PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/14/pltcl.html#PLTCL-OVERVIEW\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "summary": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "version": "14", "link_map": {"/zh/docs/14/pltcl.html#PLTCL-OVERVIEW": "/docs/14/pltcl.html#PLTCL-OVERVIEW"}, "body_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/14/pltcl.html#PLTCL-OVERVIEW\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>", "body_sha256": "097e8644102691fca705943ee7aa09f042e630dcfa08a6a32cc3150548962487", "content_hash": "f8dddaacbb1bbee90122cb22b8daa7778becaa936dd77c67e7b82394509b1d5a", "source_database": "center", "source_revision": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, "signature": "", "tables_zh": [], "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002"], "manual_html": "", "manual_path": "/docs/14/pltcl-overview.html", "sections_zh": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "localization": {"status": "complete", "sources": [{"url": "/docs/14/pltcl-config.html", "method": "same-major semantic node", "sha256": "1b66224756cfcb425163c53b41c4c60cca59a57c9a492f924f9729b8c706e77a", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/14/pltcl-data.html", "method": "same-major semantic node", "sha256": "32e872942b7d7a4b42d0dc6dcb83a7dff4cce8013ade8b211c74d4370539bb11", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/14/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "56fdd0aca46d2d0d639a83e6bf3e1d801ffa162912077b80c77cc9471d2b7ab0", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/14/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "668935fe14cfbfe1e9efff309951e87136c70a8820d99238350a518cdcd07ae7", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/14/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "29a347e23df47a676251274ae71b27a1a22e7d5d713a8ce5c209e69b9650aebf", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/14/pltcl-functions.html", "method": "same-major semantic node", "sha256": "f1caa613865c0a6c665f1c89670ad6d9bae904ad6be157b8622ae041ea7770bd", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/14/pltcl-global.html", "method": "same-major semantic node", "sha256": "1c599f1363e742cb6bc2db6f7a73cd25d518e552e95152ac601ae773657c210e", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/14/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "7f5045a7f724de4d6bf65b40fdbf2ae6c9aa438327cd01a01c188062bf7d7a78", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/14/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "f9d47a58ca8283ed0e440f57d1d4688063ed9fda879f335a39319f70ece7e335", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/14/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "05e9bc2efccea131563cd999847fad95deac5e4b2f84c7c63f93287507164511", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/14/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "340ba7e37b2c0c3576f6301a0e47e242fe799e78982649645872477dfc46e8eb", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/14/description/0": "PL/TclU untrusted procedural language", "/versions/14/facts/0/label": "Kind", "/versions/14/facts/0/value": "Bundled procedural-language variant", "/versions/14/facts/1/label": "Family", "/versions/14/facts/2/label": "Trusted", "/versions/14/facts/3/label": "Handler", "/versions/14/facts/4/label": "Library", "/versions/14/facts/5/label": "Default version", "/versions/14/facts/6/label": "Module pathname", "/versions/14/facts/7/label": "Comment", "/versions/14/facts/7/value": "PL/TclU untrusted procedural language", "/versions/14/related/0/label": "pltcl-config", "/versions/14/related/1/label": "pltcl-data", "/versions/14/related/2/label": "pltcl-dbaccess", "/versions/14/related/3/label": "pltcl-error-handling", "/versions/14/related/4/label": "pltcl-event-trigger", "/versions/14/related/5/label": "pltcl-functions", "/versions/14/related/6/label": "pltcl-global", "/versions/14/related/8/label": "pltcl-procnames", "/versions/14/related/9/label": "pltcl-subtransactions", "/versions/14/related/10/label": "pltcl-transactions", "/versions/14/related/11/label": "pltcl-trigger", "/versions/14/sections/0/title": "Installation definition from the matching source archive", "/versions/14/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "1ad9c6fcccd7aee8b5bfdf7050559dfe7ebb0b505f53991c6c407192c4c66c65", "canonical_center_text_hash": "f8dddaacbb1bbee90122cb22b8daa7778becaa936dd77c67e7b82394509b1d5a"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "81990a8e4dd323fd70a2669dcbd33a9d74d250bc7a965790dee9d96b3f823d0c"}, "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/14/pltcl.html#PLTCL-OVERVIEW\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "15": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/15/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/15/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/15/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/15/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/15/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/15/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/15/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/15/pltcl-overview.html", "label": "pltcl-overview"}, {"url": "/docs/15/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/15/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/15/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/15/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "label": "15.19", "major": "15", "channel": "stable", "revision": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89", "source_sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89", "catalog_fingerprint": "fefe3c425147a86defada190c9b0663cfe02caa1724f5dede93e46457572252d"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, {"url": "/docs/15/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 15 English manual", "sha256": "c69d50fe5d0c031be4253eee44279d07dc038040038b9c478348fa4b725280de"}], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/15/pltcl.html#PLTCL-OVERVIEW", "anchor": "PLTCL-OVERVIEW", "locale": "zh-Hans", "version": "15", "build_id": 101, "page_key": "pltcl.html", "extraction": "concept-introduction", "source_hash": "0dd6c0092b78a7dfa6c39e2df865bc3438c752686b3a8798364d85c0dc3b3ed4", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:6bce1a2df9170cb1146a1411c5547190856638221a6539e618ee1016c9f493ad", "translated_from_revision": null}, "body_sha256": "0aa46790708eb05ae599eda8246ddb4cd1852cd079f0e6e11836b38d9dbcc167", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, "facts_zh": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "center_zh": {"title": "pltclu", "locale": "zh-Hans", "source": {"key": "pltclu", "locale": "zh-Hans", "version": "15", "text_hash": "ab3f5a1836755899473e2fd7bbdeea9f195536efa4a7bbdcf7a636f9eded1203", "collection": "language", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, "payload": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/15/pltcl.html#PLTCL-OVERVIEW", "anchor": "PLTCL-OVERVIEW", "locale": "zh-Hans", "version": "15", "build_id": 101, "page_key": "pltcl.html", "extraction": "concept-introduction", "source_hash": "0dd6c0092b78a7dfa6c39e2df865bc3438c752686b3a8798364d85c0dc3b3ed4", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:6bce1a2df9170cb1146a1411c5547190856638221a6539e618ee1016c9f493ad", "translated_from_revision": null}, "body_sha256": "0aa46790708eb05ae599eda8246ddb4cd1852cd079f0e6e11836b38d9dbcc167", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span class=\"emphasis\"><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code class=\"function\">elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span class=\"productname\">PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span class=\"application\">PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code class=\"literal\">PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span class=\"emphasis\"><em>\u5982\u679c\u4f7f\u7528 <span class=\"application\">PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span class=\"application\">PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/15/pltcl.html#PLTCL-OVERVIEW\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "summary": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "version": "15", "link_map": {"/zh/docs/15/pltcl.html#PLTCL-OVERVIEW": "/docs/15/pltcl.html#PLTCL-OVERVIEW"}, "body_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/15/pltcl.html#PLTCL-OVERVIEW\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>", "body_sha256": "be684ad510c42409ae71d066abc769960ac759e5e03c91c84a6ec69e4b7c9a86", "content_hash": "ab3f5a1836755899473e2fd7bbdeea9f195536efa4a7bbdcf7a636f9eded1203", "source_database": "center", "source_revision": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, "signature": "", "tables_zh": [], "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002"], "manual_html": "", "manual_path": "/docs/15/pltcl-overview.html", "sections_zh": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "localization": {"status": "complete", "sources": [{"url": "/docs/15/pltcl-config.html", "method": "same-major semantic node", "sha256": "a79a21215077dc292f0e885462fdc1ea0a2c93b7ba8ddf64a529fbba63498549", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/15/pltcl-data.html", "method": "same-major semantic node", "sha256": "fd6c870ecc299cc4273b7694b7e354b1488f3ff4d698babbd2a95ce7d92ce123", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/15/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "7457dfdeebc8509c7c308884a6dd722490656a9ec8f5263195fb9d0d1958115f", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/15/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "f62ae338c0263abaa0d54cbc3930d0f2c5061a7c3b33c0df47dacff60f897fa2", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/15/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "e9800e533e692979a60ad41ca79d885958a78066f1fea9ead03123a059615c85", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/15/pltcl-functions.html", "method": "same-major semantic node", "sha256": "88a4ad68fccd22a4c44db372f662f9a72253824681c849f327a875cf71a68a42", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/15/pltcl-global.html", "method": "same-major semantic node", "sha256": "448332b1ed957f3075369b20d543e486a0cc6184c10b9b5fd5c27a9c2d383d9f", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/15/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "c8e2aeae3326fc52c7378d1c76f3021a22785280ae67264fb9a9a80d010e550d", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/15/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "c4adcc62b2587c646a6011633d613961ec117dccb5a9f48a7ddba2724a11621f", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/15/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "7af9704f95ee33049f3fa3b2ada2bda0f247268538cef83da0ba973c30529468", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/15/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "56278a1b9d0067751ed3c74567a0f5ec8740ebaa304b99dc93c807e7cc19c596", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/15/description/0": "PL/TclU untrusted procedural language", "/versions/15/facts/0/label": "Kind", "/versions/15/facts/0/value": "Bundled procedural-language variant", "/versions/15/facts/1/label": "Family", "/versions/15/facts/2/label": "Trusted", "/versions/15/facts/3/label": "Handler", "/versions/15/facts/4/label": "Library", "/versions/15/facts/5/label": "Default version", "/versions/15/facts/6/label": "Module pathname", "/versions/15/facts/7/label": "Comment", "/versions/15/facts/7/value": "PL/TclU untrusted procedural language", "/versions/15/related/0/label": "pltcl-config", "/versions/15/related/1/label": "pltcl-data", "/versions/15/related/2/label": "pltcl-dbaccess", "/versions/15/related/3/label": "pltcl-error-handling", "/versions/15/related/4/label": "pltcl-event-trigger", "/versions/15/related/5/label": "pltcl-functions", "/versions/15/related/6/label": "pltcl-global", "/versions/15/related/8/label": "pltcl-procnames", "/versions/15/related/9/label": "pltcl-subtransactions", "/versions/15/related/10/label": "pltcl-transactions", "/versions/15/related/11/label": "pltcl-trigger", "/versions/15/sections/0/title": "Installation definition from the matching source archive", "/versions/15/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "686a8937281772ee690a1883172f15b8590b5ee4e0379af05ea39065df86c3ab", "canonical_center_text_hash": "ab3f5a1836755899473e2fd7bbdeea9f195536efa4a7bbdcf7a636f9eded1203"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "81990a8e4dd323fd70a2669dcbd33a9d74d250bc7a965790dee9d96b3f823d0c"}, "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/15/pltcl.html#PLTCL-OVERVIEW\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "16": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/16/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/16/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/16/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/16/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/16/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/16/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/16/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/16/pltcl-overview.html", "label": "\u6982\u8ff0"}, {"url": "/docs/16/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/16/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/16/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/16/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "label": "16.15", "major": "16", "channel": "stable", "revision": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed", "source_sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed", "catalog_fingerprint": "fa133458dc8f52e15083b4f59b7a582e2e378b608d3ac5c53054df458a374e23"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, {"url": "/docs/16/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 16 English manual", "sha256": "48c40b3b6117adb1bc045a1ddf6d531e53526ae733e9db3bf98f599964164549"}], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/16/pltcl-overview.html", "anchor": "", "locale": "zh-Hans", "version": "16", "build_id": 103, "page_key": "pltcl-overview.html", "extraction": "concept-introduction", "source_hash": "8cb61b208bdc5501e60d43fa3be13f087db22898b8a02be2636062242262ad2b", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:80579a071736780f9c4022bb5148e1fb1256f1a33591306af67816e9e9bf3a9b", "translated_from_revision": null}, "body_sha256": "865f7e6559304928fd90db335d935afdbd1ecdc758ad698afd257541127a643c", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, "facts_zh": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "center_zh": {"title": "pltclu", "locale": "zh-Hans", "source": {"key": "pltclu", "locale": "zh-Hans", "version": "16", "text_hash": "a013eecac323f57e8243e324a7540d0d69bdcf34e870d1c2c5d072ce040dd822", "collection": "language", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, "payload": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/16/pltcl-overview.html", "anchor": "", "locale": "zh-Hans", "version": "16", "build_id": 103, "page_key": "pltcl-overview.html", "extraction": "concept-introduction", "source_hash": "8cb61b208bdc5501e60d43fa3be13f087db22898b8a02be2636062242262ad2b", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:80579a071736780f9c4022bb5148e1fb1256f1a33591306af67816e9e9bf3a9b", "translated_from_revision": null}, "body_sha256": "865f7e6559304928fd90db335d935afdbd1ecdc758ad698afd257541127a643c", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span class=\"emphasis\"><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code class=\"function\">elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span class=\"productname\">PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span class=\"application\">PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code class=\"literal\">PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span class=\"emphasis\"><em>\u5982\u679c\u4f7f\u7528 <span class=\"application\">PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span class=\"application\">PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/16/pltcl-overview.html\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "summary": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "version": "16", "link_map": {"/zh/docs/16/pltcl-overview.html": "/docs/16/pltcl-overview.html"}, "body_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/16/pltcl-overview.html\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>", "body_sha256": "b6bf37abc2e849c659284c364ab298b396beb4fa7710bddde793849c14c30788", "content_hash": "a013eecac323f57e8243e324a7540d0d69bdcf34e870d1c2c5d072ce040dd822", "source_database": "center", "source_revision": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, "signature": "", "tables_zh": [], "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002"], "manual_html": "", "manual_path": "/docs/16/pltcl-overview.html", "sections_zh": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "localization": {"status": "complete", "sources": [{"url": "/docs/16/pltcl-config.html", "method": "same-major semantic node", "sha256": "f309835479b80a441b7c795183238ca9afadaac13bc2e94e81da7e23f784cfc7", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-data.html", "method": "same-major semantic node", "sha256": "e2376a5392260344c21beac8b95a332a4e558eb991e20eded40ac2f48c4e28b6", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "d451d40d879b484edaed371f4fc9fc50b20724243784843b26156b2317b3312a", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "e981c5702100b59ba9cc0b2f6711fc9ec9ecd51406244d946fe6efd88b073a08", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "2ff39eeaff458bdc1c134b12dfe146d901c94886e10b102ac163e8b6f9ac043a", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-functions.html", "method": "same-major semantic node", "sha256": "90e67d25f9ee5d4c15004ca324570799f8fb0bc42c3c7eb5a9cd7c2cc16d868a", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-global.html", "method": "same-major semantic node", "sha256": "36b71d6548b67761620f1ecf4166dcf3b47c140b3e8daa0ed43f8aa2eb4a98f3", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-overview.html", "method": "same-major semantic node", "sha256": "5c6b932bdbb0aacb9195a121766132fcabe2221ff9bc14e54a8408e62951dbfb", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "c568b554aed372c28a6b7e4d7a29329473816e35449b93e3d65263ee9a2de351", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "e1ba3644fd62497834a41696d4fc08c3a0db1e01df01015ae38e6a26364eab6c", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "2181970d246a4a9a211343eea8c40d8a953e047659d850f85da36624a34e2bf1", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "3d8414deb1c95e5f83e3d25cc8d38b6f6742757c3153db92c9d3b3da629c8eb3", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/16/description/0": "PL/TclU untrusted procedural language", "/versions/16/facts/0/label": "Kind", "/versions/16/facts/0/value": "Bundled procedural-language variant", "/versions/16/facts/1/label": "Family", "/versions/16/facts/2/label": "Trusted", "/versions/16/facts/3/label": "Handler", "/versions/16/facts/4/label": "Library", "/versions/16/facts/5/label": "Default version", "/versions/16/facts/6/label": "Module pathname", "/versions/16/facts/7/label": "Comment", "/versions/16/facts/7/value": "PL/TclU untrusted procedural language", "/versions/16/related/0/label": "pltcl-config", "/versions/16/related/1/label": "pltcl-data", "/versions/16/related/2/label": "pltcl-dbaccess", "/versions/16/related/3/label": "pltcl-error-handling", "/versions/16/related/4/label": "pltcl-event-trigger", "/versions/16/related/5/label": "pltcl-functions", "/versions/16/related/6/label": "pltcl-global", "/versions/16/related/7/label": "pltcl-overview", "/versions/16/related/8/label": "pltcl-procnames", "/versions/16/related/9/label": "pltcl-subtransactions", "/versions/16/related/10/label": "pltcl-transactions", "/versions/16/related/11/label": "pltcl-trigger", "/versions/16/sections/0/title": "Installation definition from the matching source archive", "/versions/16/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "0166b1e35b3ac58fb1a5469790b954b474501b20da461facf8960b116f5d6e1d", "canonical_center_text_hash": "a013eecac323f57e8243e324a7540d0d69bdcf34e870d1c2c5d072ce040dd822"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "81990a8e4dd323fd70a2669dcbd33a9d74d250bc7a965790dee9d96b3f823d0c"}, "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/16/pltcl-overview.html\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "17": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/17/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/17/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/17/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/17/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/17/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/17/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/17/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/17/pltcl-overview.html", "label": "\u6982\u8ff0"}, {"url": "/docs/17/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/17/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/17/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/17/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "label": "17.11", "major": "17", "channel": "stable", "revision": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979", "source_sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979", "catalog_fingerprint": "4bbe3ac77becd618478f66aec420a533e9017be356c5c1d51a4b17f0fd497c07"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, {"url": "/docs/17/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 17 English manual", "sha256": "4f4650b7f27c329d727c2038f1e27ef847e0f6baffc8dac538bbebf4b1b77b40"}], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/17/pltcl-overview.html", "anchor": "", "locale": "zh-Hans", "version": "17", "build_id": 105, "page_key": "pltcl-overview.html", "extraction": "concept-introduction", "source_hash": "cdebd729311c3cdd87aade359f2ae866cf42793e436f8eee9602cb37f15e6c64", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:7340767258d21c21b36f373f1fff6bab2be18e0daca13a865129db6105c09efd", "translated_from_revision": null}, "body_sha256": "7f282273c4f86777defc108961965decb498df6e87487d731b29e41be4960de8", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, "facts_zh": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "center_zh": {"title": "pltclu", "locale": "zh-Hans", "source": {"key": "pltclu", "locale": "zh-Hans", "version": "17", "text_hash": "a55f28ef0a44d2b3c7620612c49ee6824823d9e603d5bc455093977df2c14634", "collection": "language", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, "payload": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/17/pltcl-overview.html", "anchor": "", "locale": "zh-Hans", "version": "17", "build_id": 105, "page_key": "pltcl-overview.html", "extraction": "concept-introduction", "source_hash": "cdebd729311c3cdd87aade359f2ae866cf42793e436f8eee9602cb37f15e6c64", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:7340767258d21c21b36f373f1fff6bab2be18e0daca13a865129db6105c09efd", "translated_from_revision": null}, "body_sha256": "7f282273c4f86777defc108961965decb498df6e87487d731b29e41be4960de8", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span class=\"emphasis\"><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code class=\"function\">elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span class=\"productname\">PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span class=\"application\">PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code class=\"literal\">PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span class=\"emphasis\"><em>\u5982\u679c\u4f7f\u7528 <span class=\"application\">PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span class=\"application\">PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/17/pltcl-overview.html\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "summary": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "version": "17", "link_map": {"/zh/docs/17/pltcl-overview.html": "/docs/17/pltcl-overview.html"}, "body_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/17/pltcl-overview.html\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>", "body_sha256": "3d52755b5e603aeeab8ba8eb2c0dd973ec3c3530e22ed3c02c6743a1387a888b", "content_hash": "a55f28ef0a44d2b3c7620612c49ee6824823d9e603d5bc455093977df2c14634", "source_database": "center", "source_revision": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, "signature": "", "tables_zh": [], "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002"], "manual_html": "", "manual_path": "/docs/17/pltcl-overview.html", "sections_zh": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "localization": {"status": "complete", "sources": [{"url": "/docs/17/pltcl-config.html", "method": "same-major semantic node", "sha256": "519aae5b7f1c68b647143a554a3fb4292ea8d96449dd043b3ee3e7a938ff46ff", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-data.html", "method": "same-major semantic node", "sha256": "510fd0abdda2b4277cad4bfd648e141953b189634909e6ab109adb50a857abf3", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "c0a5ba83ab37ce706fd578075c1b36191c257f129445de9762475b7465c00311", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "111530b322301bdfd6c9ca6eec9add69f4ad7a185d6c5e6cb565929a57a261ef", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "2758d68398e70f19fda60b4b9888dd4dfae5acde5aa1547e6844098008beb194", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-functions.html", "method": "same-major semantic node", "sha256": "b0b84663774c29c003a10b4b6c0984c2dc5c7de2e05001f4b8285bba6312195b", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-global.html", "method": "same-major semantic node", "sha256": "4a7d0380a88633b9db3ff5122f21015e52d734ad7bb690a66d3d9403ad3df9b1", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-overview.html", "method": "same-major semantic node", "sha256": "162fe2082139f78ec0803b62626f0ba3abfd3f70afa173be2d242f2f917743b1", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "3e0d15f57f77c39c42c17befa343e834b6b6c7ac565c78cbd285ebeefafffefb", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "b88934d180a62df6ce6968a4b0deb35befee2b84eb8dfd3840aabad880a86f61", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "c4cae6daf5135bc32b7cd0c5606cc50c3b70c9bffc19e889d67d0eba12f0ef6f", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "f73684f366d73e93d9a28614819714001ee374778b3b94def27dd3fab318c8ad", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/17/description/0": "PL/TclU untrusted procedural language", "/versions/17/facts/0/label": "Kind", "/versions/17/facts/0/value": "Bundled procedural-language variant", "/versions/17/facts/1/label": "Family", "/versions/17/facts/2/label": "Trusted", "/versions/17/facts/3/label": "Handler", "/versions/17/facts/4/label": "Library", "/versions/17/facts/5/label": "Default version", "/versions/17/facts/6/label": "Module pathname", "/versions/17/facts/7/label": "Comment", "/versions/17/facts/7/value": "PL/TclU untrusted procedural language", "/versions/17/related/0/label": "pltcl-config", "/versions/17/related/1/label": "pltcl-data", "/versions/17/related/2/label": "pltcl-dbaccess", "/versions/17/related/3/label": "pltcl-error-handling", "/versions/17/related/4/label": "pltcl-event-trigger", "/versions/17/related/5/label": "pltcl-functions", "/versions/17/related/6/label": "pltcl-global", "/versions/17/related/7/label": "pltcl-overview", "/versions/17/related/8/label": "pltcl-procnames", "/versions/17/related/9/label": "pltcl-subtransactions", "/versions/17/related/10/label": "pltcl-transactions", "/versions/17/related/11/label": "pltcl-trigger", "/versions/17/sections/0/title": "Installation definition from the matching source archive", "/versions/17/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "8c4579340f6baa66d35f7d07cdbcce6e4c9be639b6c84b16c23804e8b349c3e4", "canonical_center_text_hash": "a55f28ef0a44d2b3c7620612c49ee6824823d9e603d5bc455093977df2c14634"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "81990a8e4dd323fd70a2669dcbd33a9d74d250bc7a965790dee9d96b3f823d0c"}, "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/17/pltcl-overview.html\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "18": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/18/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/18/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/18/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/18/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/18/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/18/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/18/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/18/pltcl-overview.html", "label": "\u6982\u8ff0"}, {"url": "/docs/18/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/18/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/18/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/18/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "catalog_fingerprint": "65c93d6048ef30e61023a84f9680fa6a92b1c383b7eb226741170077eb078502"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, {"url": "/docs/18/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 18 English manual", "sha256": "ed93c7e7682e446657a8c944dbabdabb0236e2d09c48db1c7e804270ce480044"}], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/18/pltcl-overview.html", "anchor": "", "locale": "zh-Hans", "version": "18", "build_id": 107, "page_key": "pltcl-overview.html", "extraction": "concept-introduction", "source_hash": "55e36d230231cb356bd65998471f93060e3753dc785b3a34802d1b8c83f8978a", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:08e987a66af27b98444a8057c256314eafa13611a3fb9e888214fc436824244b", "translated_from_revision": null}, "body_sha256": "25b9c423c7bafed1caa0d67d7a7bea6337f3e4499c236a6a25807fe0e236c8ad", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "facts_zh": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "center_zh": {"title": "pltclu", "locale": "zh-Hans", "source": {"key": "pltclu", "locale": "zh-Hans", "version": "18", "text_hash": "f0c64a91636093b9d6378f25dd2853dce3ab864db570ef6086264e38dafb491c", "collection": "language", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "payload": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/18/pltcl-overview.html", "anchor": "", "locale": "zh-Hans", "version": "18", "build_id": 107, "page_key": "pltcl-overview.html", "extraction": "concept-introduction", "source_hash": "55e36d230231cb356bd65998471f93060e3753dc785b3a34802d1b8c83f8978a", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:08e987a66af27b98444a8057c256314eafa13611a3fb9e888214fc436824244b", "translated_from_revision": null}, "body_sha256": "25b9c423c7bafed1caa0d67d7a7bea6337f3e4499c236a6a25807fe0e236c8ad", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span class=\"emphasis\"><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code class=\"function\">elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span class=\"productname\">PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span class=\"application\">PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code class=\"literal\">PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span class=\"emphasis\"><em>\u5982\u679c\u4f7f\u7528 <span class=\"application\">PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span class=\"application\">PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/18/pltcl-overview.html\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "summary": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "version": "18", "link_map": {"/zh/docs/18/pltcl-overview.html": "/docs/18/pltcl-overview.html"}, "body_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/18/pltcl-overview.html\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>", "body_sha256": "f98292c157220a5cf198fabb8f094b92b715902c5cb595045f33f79947fe151f", "content_hash": "f0c64a91636093b9d6378f25dd2853dce3ab864db570ef6086264e38dafb491c", "source_database": "center", "source_revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "signature": "", "tables_zh": [], "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002"], "manual_html": "", "manual_path": "/docs/18/pltcl-overview.html", "sections_zh": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "localization": {"status": "complete", "sources": [{"url": "/docs/18/pltcl-config.html", "method": "same-major semantic node", "sha256": "44bd7295431ce43082579fd75e325702d59ec6a7559637dcb4277a15e3955840", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-data.html", "method": "same-major semantic node", "sha256": "eae86495797a15ab7fc81a0e1df8c3c8cb0510541d92996034e044e253723661", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "d9d56737e09ec9777611f98bab439306e428fd067b6b78c48c683651df6d3fe8", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "ebf08a10fce4b6ff4e80408187b64cd96ae2184f2a2d430ba219b2bea9c480b9", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "172bc7b8e8b9f630b6c0b21746889cd9f11be93da0ebdd643f9d1f7176ff5767", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-functions.html", "method": "same-major semantic node", "sha256": "f0170be36dcd273379209a05372b9faa548c84c8fa997643a70d3a77d017a632", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-global.html", "method": "same-major semantic node", "sha256": "e08c5f22c0a94e2e8a66299ba7de5f0d0ad0b5412e7df02f483dc8864bedcf2a", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-overview.html", "method": "same-major semantic node", "sha256": "76c5b1d72336e5f085d19de115704918382f35b19a5274fa14341d40986d2776", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "84665c1991422a305552b8511393ae7157d7e9c950218b0a12c9d5b46b79cb83", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "7f07515a70b3e8453088498a06f9b24b4725756c0819bd33aec4d9dc0299aa39", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "d88b8fc3f963a251e897c3943c5c2b85fe8431cf1e18a1a8824a460447bf839e", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "a50a86f45b38e1891e93986f6dd04eaeaf9f85926c482e2b564740e54f69de7b", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/18/description/0": "PL/TclU untrusted procedural language", "/versions/18/facts/0/label": "Kind", "/versions/18/facts/0/value": "Bundled procedural-language variant", "/versions/18/facts/1/label": "Family", "/versions/18/facts/2/label": "Trusted", "/versions/18/facts/3/label": "Handler", "/versions/18/facts/4/label": "Library", "/versions/18/facts/5/label": "Default version", "/versions/18/facts/6/label": "Module pathname", "/versions/18/facts/7/label": "Comment", "/versions/18/facts/7/value": "PL/TclU untrusted procedural language", "/versions/18/related/0/label": "pltcl-config", "/versions/18/related/1/label": "pltcl-data", "/versions/18/related/2/label": "pltcl-dbaccess", "/versions/18/related/3/label": "pltcl-error-handling", "/versions/18/related/4/label": "pltcl-event-trigger", "/versions/18/related/5/label": "pltcl-functions", "/versions/18/related/6/label": "pltcl-global", "/versions/18/related/7/label": "pltcl-overview", "/versions/18/related/8/label": "pltcl-procnames", "/versions/18/related/9/label": "pltcl-subtransactions", "/versions/18/related/10/label": "pltcl-transactions", "/versions/18/related/11/label": "pltcl-trigger", "/versions/18/sections/0/title": "Installation definition from the matching source archive", "/versions/18/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "143984f67996e93595d13f35d264d808bfd4f91b9900c16857a3e3883e08bfbb", "canonical_center_text_hash": "f0c64a91636093b9d6378f25dd2853dce3ab864db570ef6086264e38dafb491c"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "81990a8e4dd323fd70a2669dcbd33a9d74d250bc7a965790dee9d96b3f823d0c"}, "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/18/pltcl-overview.html\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>", "center_zh_rendered": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/docs/18/pltcl-overview.html\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "19": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/19/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/19/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/19/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/19/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/19/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/19/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/19/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/19/pltcl-overview.html", "label": "\u6982\u8ff0"}, {"url": "/docs/19/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/19/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/19/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/19/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v19rc1/postgresql-19rc1.tar.bz2", "label": "19rc1", "major": "19", "channel": "preview", "revision": "af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701", "source_sha256": "af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701", "catalog_fingerprint": "62fbf1a3689dbe8bf7e6b3372cfe6fbf867581427b3858a94c8419b77a4d2d1d"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v19rc1/postgresql-19rc1.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701"}, {"url": "/docs/19/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 19 English manual", "sha256": "59e4320f33d48e679d8c327fe3aa78c7c8b16dc60af8ee2a8b28c8e164b395a2"}], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/19/pltcl-overview.html", "anchor": "", "locale": "zh-Hans", "version": "19", "build_id": 109, "page_key": "pltcl-overview.html", "extraction": "concept-introduction", "source_hash": "e199289d523e4955807c292a5a449efa25e9d26db8ece24a0de7b47b393fff7f", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "sha256:af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:65fda1f1b62a89992b84014c9157e61b67dbe8190e93945826efec668fad038c", "translated_from_revision": "sha256:af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701"}, "body_sha256": "26211ca538a83f421386b28470f4aeef253c2e3dccaf92899f8003285bf137b6", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701"}, "facts_zh": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "center_zh": {"title": "pltclu", "locale": "zh-Hans", "source": {"key": "pltclu", "locale": "zh-Hans", "version": "19", "text_hash": "b1ac2c2b2a9e7e02d2b5564ba99a59f6e05d8a768416bcbd5b2864c342fdecbe", "collection": "language", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701"}, "payload": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/19/pltcl-overview.html", "anchor": "", "locale": "zh-Hans", "version": "19", "build_id": 109, "page_key": "pltcl-overview.html", "extraction": "concept-introduction", "source_hash": "e199289d523e4955807c292a5a449efa25e9d26db8ece24a0de7b47b393fff7f", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "sha256:af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:65fda1f1b62a89992b84014c9157e61b67dbe8190e93945826efec668fad038c", "translated_from_revision": "sha256:af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701"}, "body_sha256": "26211ca538a83f421386b28470f4aeef253c2e3dccaf92899f8003285bf137b6", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701"}, "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span class=\"emphasis\"><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code class=\"function\">elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span class=\"productname\">PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span class=\"application\">PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code class=\"literal\">PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span class=\"emphasis\"><em>\u5982\u679c\u4f7f\u7528 <span class=\"application\">PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span class=\"application\">PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/19/pltcl-overview.html\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "summary": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "version": "19", "link_map": {"/zh/docs/19/pltcl-overview.html": "/docs/19/pltcl-overview.html"}, "body_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/19/pltcl-overview.html\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>", "body_sha256": "844b47b9edc856da58286855243783efd933ececf9c0e5d5788757c9b27211c4", "content_hash": "b1ac2c2b2a9e7e02d2b5564ba99a59f6e05d8a768416bcbd5b2864c342fdecbe", "source_database": "center", "source_revision": "af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701"}, "signature": "", "tables_zh": [], "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002"], "manual_html": "", "manual_path": "/docs/19/pltcl-overview.html", "sections_zh": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "localization": {"status": "complete", "sources": [{"url": "/docs/19/pltcl-config.html", "method": "same-major semantic node", "sha256": "10fc954500967a917093cf035552ac8198291395d181ce21737a4e027475587a", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-data.html", "method": "same-major semantic node", "sha256": "84628a196e2d3b0005054e1367bda1b953087d595219ad7ce66d01e2d4f79d69", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "bf1d7a8525e842600f5d7230a70b1c5e9b3c9c395952b3f9c781c3e3171b85c0", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "2656114f3e00b40c571607b76b591b4da00269bd0fcc4ad90839f51de245356e", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "e49f420595493fd8a9d0852c60b4620ff8a4c3e0050839f0944f206a53927e38", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-functions.html", "method": "same-major semantic node", "sha256": "4bf399dc70df36b63dd534626cc1560f266ae671373dad51d37217f36bd33315", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-global.html", "method": "same-major semantic node", "sha256": "ce3869a533e8b9f46e8dd89d0dfc7aeecc8e8065bf0ac6edd210f1c255e20cd8", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-overview.html", "method": "same-major semantic node", "sha256": "ac600891232b53c4d53e83a3638ea9e6b63b4d935da13de87dc37df46b6cf066", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "f6d8a48b1d4229175d3a91a57b457cad6cee1d383306d593ef879085f0d553f8", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "8e4bc1d90eb33daf926bffaae124c8b5a0bdd2eca78d4f8888ea2088c8cd1220", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "31158f9aa706ef63668acbba6c8f5fba8c5df1d183120819265f51d9f5fb06d7", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "689d956b9c68e1042981e21c8c381d7abcbdc04cd44858c09f37d842c92ed562", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/19/description/0": "PL/TclU untrusted procedural language", "/versions/19/facts/0/label": "Kind", "/versions/19/facts/0/value": "Bundled procedural-language variant", "/versions/19/facts/1/label": "Family", "/versions/19/facts/2/label": "Trusted", "/versions/19/facts/3/label": "Handler", "/versions/19/facts/4/label": "Library", "/versions/19/facts/5/label": "Default version", "/versions/19/facts/6/label": "Module pathname", "/versions/19/facts/7/label": "Comment", "/versions/19/facts/7/value": "PL/TclU untrusted procedural language", "/versions/19/related/0/label": "pltcl-config", "/versions/19/related/1/label": "pltcl-data", "/versions/19/related/2/label": "pltcl-dbaccess", "/versions/19/related/3/label": "pltcl-error-handling", "/versions/19/related/4/label": "pltcl-event-trigger", "/versions/19/related/5/label": "pltcl-functions", "/versions/19/related/6/label": "pltcl-global", "/versions/19/related/7/label": "pltcl-overview", "/versions/19/related/8/label": "pltcl-procnames", "/versions/19/related/9/label": "pltcl-subtransactions", "/versions/19/related/10/label": "pltcl-transactions", "/versions/19/related/11/label": "pltcl-trigger", "/versions/19/sections/0/title": "Installation definition from the matching source archive", "/versions/19/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "75a520c231621221e6e87310971344faa8254ba76eedf7d3a94852a391294449", "canonical_center_text_hash": "b1ac2c2b2a9e7e02d2b5564ba99a59f6e05d8a768416bcbd5b2864c342fdecbe"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "81990a8e4dd323fd70a2669dcbd33a9d74d250bc7a965790dee9d96b3f823d0c"}, "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/19/pltcl-overview.html\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>", "source_revalidation": {"kind": "static-same-version-source-and-manual-replay", "audit": "wiki-audit-20261023", "runtime_rerun": false, "compared_fields": "entity membership and source-derived facts; presentation markup normalized", "source_revision": "af105fc8e960fc836a09fc2cd7f582b49fd17675d9d36631abe3a565bfd7d701", "previous_source_revision": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86"}}, "20": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/devel/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/devel/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/devel/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/devel/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/devel/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/devel/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/devel/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/devel/pltcl-overview.html", "label": "\u6982\u8ff0"}, {"url": "/docs/devel/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/devel/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/devel/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/devel/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "label": "20devel", "major": "20", "channel": "devel", "revision": "49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac", "source_sha256": "49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac", "catalog_fingerprint": "1ae459dc2ba59b6e0a27d5cbeebb27c417dd0be8ddf853fb0c1e533d4e449c9a"}, "sources": [{"url": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac"}, {"url": "/docs/devel/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 20 English manual", "sha256": "c7e9c5c444a8637eb485f1a232012e9406c8b28b8627ebf6b6288f4ee7d413a6"}], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/devel/pltcl-overview.html", "anchor": "", "locale": "zh-Hans", "version": "20", "build_id": 111, "page_key": "pltcl-overview.html", "extraction": "concept-introduction", "source_hash": "d49339dfaf81ddaea446877c098e0f234d8fffa06874d66c43e4380761030882", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "sha256:49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:98c980963b401d40bd50df72b909e7523e3148b8fdb48edd897de2efb67e5235", "translated_from_revision": "sha256:49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac"}, "body_sha256": "197004a2179c1738223c2e1762886ee0db03968daf63e62a2d81b443f706d13b", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac"}, "facts_zh": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "center_zh": {"title": "pltclu", "locale": "zh-Hans", "source": {"key": "pltclu", "locale": "zh-Hans", "version": "20", "text_hash": "ed008d78d45cc632cf0874b80cd13cfc8dea7b3176cb96d5a92d964df48fdd26", "collection": "language", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac"}, "payload": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/devel/pltcl-overview.html", "anchor": "", "locale": "zh-Hans", "version": "20", "build_id": 111, "page_key": "pltcl-overview.html", "extraction": "concept-introduction", "source_hash": "d49339dfaf81ddaea446877c098e0f234d8fffa06874d66c43e4380761030882", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "sha256:49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:98c980963b401d40bd50df72b909e7523e3148b8fdb48edd897de2efb67e5235", "translated_from_revision": "sha256:49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac"}, "body_sha256": "197004a2179c1738223c2e1762886ee0db03968daf63e62a2d81b443f706d13b", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac"}, "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span class=\"emphasis\"><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code class=\"function\">elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span class=\"productname\">PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span class=\"application\">PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code class=\"literal\">PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span class=\"emphasis\"><em>\u5982\u679c\u4f7f\u7528 <span class=\"application\">PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span class=\"application\">PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/devel/pltcl-overview.html\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "summary": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "version": "20", "link_map": {"/zh/docs/devel/pltcl-overview.html": "/docs/devel/pltcl-overview.html"}, "body_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/devel/pltcl-overview.html\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>", "body_sha256": "ec1f68328851e79199c91cb3513a83754d8012f4570f774c56f668d31c8e0668", "content_hash": "ed008d78d45cc632cf0874b80cd13cfc8dea7b3176cb96d5a92d964df48fdd26", "source_database": "center", "source_revision": "49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac"}, "signature": "", "tables_zh": [], "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002"], "manual_html": "", "manual_path": "/docs/devel/pltcl-overview.html", "sections_zh": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "localization": {"status": "complete", "sources": [{"url": "/docs/devel/pltcl-config.html", "method": "same-major semantic node", "sha256": "06b448ec1ced3e28733dfea9f6e4ac5b5e9360d20d47fdc27aed140c59f822a9", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-data.html", "method": "same-major semantic node", "sha256": "2c3acd01e7a7b62f65e1c2370293cc503761aaa563c52f6f2f76d9e8f5f1c160", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "ce635078d9001203155754ba099bbb5e1e4221e9b98149fdbaaba21b2f550f6b", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "128178bca5da7c1f5a7be1e94effd48cc5be2a1f1647d76a4e12c6be99cab73b", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "cbd0f8b5d1514bdd204374c2a88f18e7a6a1c4e27e1e2aa96d95c0d629191960", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-functions.html", "method": "same-major semantic node", "sha256": "cc7a04bfde78a0169964ccf6f52e65bf79cbc85bcb1d5a7982dc8c8ae56aeeae", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-global.html", "method": "same-major semantic node", "sha256": "5f48c1912f0570e344813a1412b5bc42cac3621f44ed1b93c3e759185b7366af", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-overview.html", "method": "same-major semantic node", "sha256": "7c505ff44f28035c3bac2e1283936fd4e009ec4b2b0626ba0628fb6574661eda", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "316070347877bcaa997f7c7a90bb3c945727f58a42c35f2ee67ab0314e34866b", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "5a249a3eeaf3d9fc221c1a095e38c42a4b9a9605564236d7029019004dab0c78", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "56bbd1665c877fcbcd84cfad692679a8831efd59733cfcf90d6dfa0270653cf5", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "b704934f08551a2cf0c619813aea7254302bee187534f0a5eda1db03d16feab2", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/summary": "PL/TclU untrusted procedural language", "/versions/20/description/0": "PL/TclU untrusted procedural language", "/versions/20/facts/0/label": "Kind", "/versions/20/facts/0/value": "Bundled procedural-language variant", "/versions/20/facts/1/label": "Family", "/versions/20/facts/2/label": "Trusted", "/versions/20/facts/3/label": "Handler", "/versions/20/facts/4/label": "Library", "/versions/20/facts/5/label": "Default version", "/versions/20/facts/6/label": "Module pathname", "/versions/20/facts/7/label": "Comment", "/versions/20/facts/7/value": "PL/TclU untrusted procedural language", "/versions/20/related/0/label": "pltcl-config", "/versions/20/related/1/label": "pltcl-data", "/versions/20/related/2/label": "pltcl-dbaccess", "/versions/20/related/3/label": "pltcl-error-handling", "/versions/20/related/4/label": "pltcl-event-trigger", "/versions/20/related/5/label": "pltcl-functions", "/versions/20/related/6/label": "pltcl-global", "/versions/20/related/7/label": "pltcl-overview", "/versions/20/related/8/label": "pltcl-procnames", "/versions/20/related/9/label": "pltcl-subtransactions", "/versions/20/related/10/label": "pltcl-transactions", "/versions/20/related/11/label": "pltcl-trigger", "/versions/20/sections/0/title": "Installation definition from the matching source archive", "/versions/20/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "f1a2ddf768a7826d96428642bc2b2a096d7798589b223e37b9ba9a975dad65e3", "canonical_center_text_hash": "ed008d78d45cc632cf0874b80cd13cfc8dea7b3176cb96d5a92d964df48fdd26"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "81990a8e4dd323fd70a2669dcbd33a9d74d250bc7a965790dee9d96b3f823d0c"}, "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/devel/pltcl-overview.html\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>", "source_revalidation": {"kind": "static-same-version-source-and-manual-replay", "audit": "wiki-audit-20261023", "runtime_rerun": false, "compared_fields": "entity membership and source-derived facts; presentation markup normalized", "source_revision": "49c73aa4c9cacef8ca979276a28ac416c08e9e54c9baee4ae5fd116a35fa13ac", "previous_source_revision": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41"}}}}, "snapshot": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/18/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/18/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/18/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/18/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/18/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/18/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/18/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/18/pltcl-overview.html", "label": "\u6982\u8ff0"}, {"url": "/docs/18/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/18/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/18/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/18/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "catalog_fingerprint": "65c93d6048ef30e61023a84f9680fa6a92b1c383b7eb226741170077eb078502"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, {"url": "/docs/18/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 18 English manual", "sha256": "ed93c7e7682e446657a8c944dbabdabb0236e2d09c48db1c7e804270ce480044"}], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/18/pltcl-overview.html", "anchor": "", "locale": "zh-Hans", "version": "18", "build_id": 107, "page_key": "pltcl-overview.html", "extraction": "concept-introduction", "source_hash": "55e36d230231cb356bd65998471f93060e3753dc785b3a34802d1b8c83f8978a", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:08e987a66af27b98444a8057c256314eafa13611a3fb9e888214fc436824244b", "translated_from_revision": null}, "body_sha256": "25b9c423c7bafed1caa0d67d7a7bea6337f3e4499c236a6a25807fe0e236c8ad", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "facts_zh": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "center_zh": {"title": "pltclu", "locale": "zh-Hans", "source": {"key": "pltclu", "locale": "zh-Hans", "version": "18", "text_hash": "f0c64a91636093b9d6378f25dd2853dce3ab864db570ef6086264e38dafb491c", "collection": "language", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "payload": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "zh_from": {"kind": "same-version-chinese-manual-with-source-derived-structured-summary", "manual": {"url": "/zh/docs/18/pltcl-overview.html", "anchor": "", "locale": "zh-Hans", "version": "18", "build_id": 107, "page_key": "pltcl-overview.html", "extraction": "concept-introduction", "source_hash": "55e36d230231cb356bd65998471f93060e3753dc785b3a34802d1b8c83f8978a", "fragment_sha256": "b7c9227131bf64d653cdea2685ce3647932708c511072a5a133b39a9af0ba4c4", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:08e987a66af27b98444a8057c256314eafa13611a3fb9e888214fc436824244b", "translated_from_revision": null}, "body_sha256": "25b9c423c7bafed1caa0d67d7a7bea6337f3e4499c236a6a25807fe0e236c8ad", "runtime_rerun": false, "authored_translation": "source-derived-structured-summary", "source_facts_revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span class=\"emphasis\"><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code class=\"function\">elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span class=\"productname\">PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span class=\"application\">PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code class=\"literal\">PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span class=\"emphasis\"><em>\u5982\u679c\u4f7f\u7528 <span class=\"application\">PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span class=\"application\">PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/18/pltcl-overview.html\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "summary": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "version": "18", "link_map": {"/zh/docs/18/pltcl-overview.html": "/docs/18/pltcl-overview.html"}, "body_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/18/pltcl-overview.html\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>", "body_sha256": "f98292c157220a5cf198fabb8f094b92b715902c5cb595045f33f79947fe151f", "content_hash": "f0c64a91636093b9d6378f25dd2853dce3ab864db570ef6086264e38dafb491c", "source_database": "center", "source_revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "signature": "", "tables_zh": [], "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002"], "manual_html": "", "manual_path": "/docs/18/pltcl-overview.html", "sections_zh": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "localization": {"status": "complete", "sources": [{"url": "/docs/18/pltcl-config.html", "method": "same-major semantic node", "sha256": "44bd7295431ce43082579fd75e325702d59ec6a7559637dcb4277a15e3955840", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-data.html", "method": "same-major semantic node", "sha256": "eae86495797a15ab7fc81a0e1df8c3c8cb0510541d92996034e044e253723661", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "d9d56737e09ec9777611f98bab439306e428fd067b6b78c48c683651df6d3fe8", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "ebf08a10fce4b6ff4e80408187b64cd96ae2184f2a2d430ba219b2bea9c480b9", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "172bc7b8e8b9f630b6c0b21746889cd9f11be93da0ebdd643f9d1f7176ff5767", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-functions.html", "method": "same-major semantic node", "sha256": "f0170be36dcd273379209a05372b9faa548c84c8fa997643a70d3a77d017a632", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-global.html", "method": "same-major semantic node", "sha256": "e08c5f22c0a94e2e8a66299ba7de5f0d0ad0b5412e7df02f483dc8864bedcf2a", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-overview.html", "method": "same-major semantic node", "sha256": "76c5b1d72336e5f085d19de115704918382f35b19a5274fa14341d40986d2776", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "84665c1991422a305552b8511393ae7157d7e9c950218b0a12c9d5b46b79cb83", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "7f07515a70b3e8453088498a06f9b24b4725756c0819bd33aec4d9dc0299aa39", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "d88b8fc3f963a251e897c3943c5c2b85fe8431cf1e18a1a8824a460447bf839e", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "a50a86f45b38e1891e93986f6dd04eaeaf9f85926c482e2b564740e54f69de7b", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/18/description/0": "PL/TclU untrusted procedural language", "/versions/18/facts/0/label": "Kind", "/versions/18/facts/0/value": "Bundled procedural-language variant", "/versions/18/facts/1/label": "Family", "/versions/18/facts/2/label": "Trusted", "/versions/18/facts/3/label": "Handler", "/versions/18/facts/4/label": "Library", "/versions/18/facts/5/label": "Default version", "/versions/18/facts/6/label": "Module pathname", "/versions/18/facts/7/label": "Comment", "/versions/18/facts/7/value": "PL/TclU untrusted procedural language", "/versions/18/related/0/label": "pltcl-config", "/versions/18/related/1/label": "pltcl-data", "/versions/18/related/2/label": "pltcl-dbaccess", "/versions/18/related/3/label": "pltcl-error-handling", "/versions/18/related/4/label": "pltcl-event-trigger", "/versions/18/related/5/label": "pltcl-functions", "/versions/18/related/6/label": "pltcl-global", "/versions/18/related/7/label": "pltcl-overview", "/versions/18/related/8/label": "pltcl-procnames", "/versions/18/related/9/label": "pltcl-subtransactions", "/versions/18/related/10/label": "pltcl-transactions", "/versions/18/related/11/label": "pltcl-trigger", "/versions/18/sections/0/title": "Installation definition from the matching source archive", "/versions/18/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "143984f67996e93595d13f35d264d808bfd4f91b9900c16857a3e3883e08bfbb", "canonical_center_text_hash": "f0c64a91636093b9d6378f25dd2853dce3ab864db570ef6086264e38dafb491c"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "81990a8e4dd323fd70a2669dcbd33a9d74d250bc7a965790dee9d96b3f823d0c"}, "description_zh": "\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002", "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh", "description_zh_html": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/zh/docs/18/pltcl-overview.html\" rel=\"nofollow\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>", "center_zh_rendered": "<p>\u8fc7\u7a0b\u8bed\u8a00 pltclu\u3002</p><dl><dt>\u8fd0\u7b97\u7b26\u65cf</dt><dd><code>PL/Tcl</code></dd><dt>\u5904\u7406\u51fd\u6570</dt><dd><code>pltclu_call_handler</code></dd><dt>\u5e93</dt><dd><code>$libdir/pltcl</code></dd><dt>\u53d7\u4fe1\u4efb</dt><dd><code>\u5426</code></dd><dt>\u9ed8\u8ba4\u7248\u672c</dt><dd><code>1.0</code></dd><dt>\u6a21\u5757\u8def\u5f84</dt><dd><code>$libdir/pltcl</code></dd></dl><h3>\u540c\u7248\u672c\u4e2d\u6587\u624b\u518c\u8282\u9009</h3><p>\n    PL/Tcl \u63d0\u4f9b\u4e86\u51fd\u6570\u7f16\u5199\u8005\u5728 C \u8bed\u8a00\u4e2d\u6240\u5177\u5907\u7684\u5927\u90e8\u5206\u80fd\u529b\uff0c\u4f46\u4f1a\u65bd\u52a0\u5c11\u91cf\u9650\u5236\uff0c\u5e76\u989d\u5916\u63d0\u4f9b Tcl \u53ef\u7528\u7684\u5f3a\u5927\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002\n   </p><p>\n    \u5176\u4e2d\u4e00\u4e2a\u9887\u5177\u5438\u5f15\u529b\u7684<span><em>\u826f\u6027</em></span>\u9650\u5236\u662f\uff0c\u6240\u6709\u5185\u5bb9\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u7684\u5b89\u5168\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002\u9664\u4e86\u5b89\u5168 Tcl \u53d7\u9650\u7684\u547d\u4ee4\u96c6\u4e4b\u5916\uff0c\u53ea\u63d0\u4f9b\u4e86\u5c11\u6570\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u4ee5\u53ca\u901a\u8fc7 <code>elog()</code> \u53d1\u51fa\u6d88\u606f\u7684\u547d\u4ee4\u3002\u4e0e C \u51fd\u6570\u4e0d\u540c\uff0cPL/Tcl \u4e0d\u63d0\u4f9b\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\u673a\u5236\u7684\u65b9\u6cd5\uff0c\u4e5f\u4e0d\u80fd\u5728 <span>PostgreSQL</span> \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u4e0b\u83b7\u5f97\u64cd\u4f5c\u7cfb\u7edf\u7ea7\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u975e\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u8fd9\u79cd\u8bed\u8a00\uff1b\u5b83\u4e0d\u4f1a\u6388\u4e88\u4ed6\u4eec\u65e0\u9650\u5236\u7684\u6743\u9650\u3002\n   </p><p>\n    \u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff0cTcl \u51fd\u6570\u4e0d\u80fd\u7528\u6765\u4e3a\u65b0\u6570\u636e\u7c7b\u578b\u521b\u5efa\u8f93\u5165/\u8f93\u51fa\u51fd\u6570\u3002\n   </p><p>\n    \u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684 Tcl \u51fd\u6570\u3002\u4f8b\u5982\uff0c\u53ef\u80fd\u5e0c\u671b\u67d0\u4e2a Tcl \u51fd\u6570\u80fd\u591f\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002\u4e3a\u5904\u7406\u8fd9\u7c7b\u60c5\u51b5\uff0c<span>PL/Tcl</span> \u63d0\u4f9b\u4e86\u4e00\u4e2a\u540d\u4e3a <code>PL/TclU</code> \u7684\u53d8\u4f53\uff08\u5176\u4e2d U \u8868\u793a\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\uff09\u3002\u9664\u4e86\u4f7f\u7528\u5b8c\u6574\u7684 Tcl \u89e3\u91ca\u5668\u4e4b\u5916\uff0c\u5b83\u4e0e\u524d\u8005\u662f\u5b8c\u5168\u76f8\u540c\u7684\u8bed\u8a00\u3002<span><em>\u5982\u679c\u4f7f\u7528 <span>PL/TclU</span>\uff0c\u5c31\u5fc5\u987b\u5c06\u5176\u5b89\u88c5\u4e3a\u4e00\u79cd\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00</em></span>\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u5728\u5176\u4e2d\u521b\u5efa\u51fd\u6570\u3002<span>PL/TclU</span> \u51fd\u6570\u7684\u7f16\u5199\u8005\u5fc5\u987b\u786e\u4fdd\u8be5\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u6765\u505a\u4efb\u4f55\u4e0d\u5e0c\u671b\u53d1\u751f\u7684\u4e8b\u60c5\uff0c\u56e0\u4e3a\u5b83\u80fd\u591f\u6267\u884c\u4efb\u4f55\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u505a\u7684\u4e8b\u60c5\u3002\n   </p><p><a href=\"/docs/18/pltcl-overview.html\">\u67e5\u770b\u5b8c\u6574\u4e2d\u6587\u624b\u518c\u4e0e\u4e0a\u4e0b\u6587</a>\u3002</p>"}, "comparison": {"left": "17", "right": "18", "status": "unchanged", "diff": ""}}