H.3. Procedural Languages

|    H.3. Procedural Languages    |                            |                             |                  |                                 |
|:-------------------------------:|----------------------------|-----------------------------|------------------|---------------------------------|
|[Prev](external-admin-tools.html)|[Up](external-projects.html)|Appendix H. External Projects|[Home](index.html)| [Next](external-extensions.html)|

---

## H.3. Procedural Languages

[]()

PostgreSQL includes several procedural languages with the base distribution: [PL/pgSQL](plpgsql.html), [PL/Tcl](pltcl.html), [PL/Perl](plperl.html), and [PL/Python](plpython.html).

 In addition, there are a number of procedural languages that are developed and maintained outside the core PostgreSQL distribution. [Table H.2](external-pl.html#PL-LANGUAGE-TABLE) lists some of these packages. Note that some of these projects might not be released under the same license as PostgreSQL. For more information on each procedural language, including licensing information, refer to its website and documentation.

**Table H.2. Externally Maintained Procedural Languages**

| Name  | Language |                                 Website                                  |
|-------|----------|--------------------------------------------------------------------------|
|PL/Java|   Java   |     [https://tada.github.io/pljava/](https://tada.github.io/pljava/)     |
|PL/Lua |   Lua    |  [https://github.com/pllua/pllua-ng](https://github.com/pllua/pllua-ng)  |
| PL/R  |    R     |[https://github.com/postgres-plr/plr](https://github.com/postgres-plr/plr)|
| PL/sh |Unix shell|     [https://github.com/petere/plsh](https://github.com/petere/plsh)     |
| PL/v8 |JavaScript|       [https://github.com/plv8/plv8](https://github.com/plv8/plv8)       |

---

|[Prev](external-admin-tools.html)|[Up](external-projects.html)| [Next](external-extensions.html)|
|:--------------------------------|:--------------------------:|--------------------------------:|
|    H.2. Administration Tools    |     [Home](index.html)     |         H.4. Extensions         |

 // \<![CDATA[ \<-- For SVG support if ('WebSocket' in window) { (function() { function refreshCSS() { var sheets = [].slice.call(document.getElementsByTagName("link")); var head = document.getElementsByTagName("head")[0]; for (var i = 0; i \< sheets.length; ++i) { var elem = sheets[i]; head.removeChild(elem); var rel = elem.rel; if (elem.href && typeof rel != "string" || rel.length == 0 || rel.toLowerCase() == "stylesheet") { var url = elem.href.replace(/(&|\\?)\_cacheOverride=\\d+/, ''); elem.href = url + (url.indexOf('?') \>= 0 ? '&' : '?') + '\_cacheOverride=' + (new Date().valueOf()); } head.appendChild(elem); } } var protocol = window.location.protocol === 'http:' ? 'ws://' : 'wss://'; var address = protocol + window.location.host + window.location.pathname + '/ws'; var socket = new WebSocket(address); socket.onmessage = function(msg) { if (msg.data == 'reload') window.location.reload(); else if (msg.data == 'refreshcss') refreshCSS(); }; console.log('Live reload enabled.'); })(); } // ]]\>