
# PL/SQL语言函数
PL/SQL是一种可载入的过程语言。
用PL/SQL创建的函数可以被用在任何可以使用内建函数的地方。例如，可用于创建复杂条件的计算函数、定义操作符以及索引表达式。
SQL被大多数数据库用作查询语言。它是可移植的并且容易学习。但是每一个SQL语句必须由数据库服务器单独执行。
这意味着客户端应用对于每一个查询都要执行以下过程：发送查询到数据库服务器、等待查询被接收、接收并处理结果、进行相关计算、然后发送更多查询给服务器。如果客户端和数据库服务器不在同一台机器上，那么这个过程还会引起进程间通信并且将带来网络负担。
通过PL/SQL，可以将一整块计算和一系列查询分组在数据库服务器内部，这样就有了一种过程语言的能力并且使SQL更易用，同时能节省客户端/服务器通信开销。
- 客户端和服务器之间的额外往返通信被消除。
- 客户端不需要的中间结果不必被整理或者在服务器和客户端之间传送。
- 多轮的查询解析可以被避免。
PL/SQL可以使用SQL中所有的数据类型、操作符和函数，应用PL/SQL创建函数的语法为[CREATE FUNCTION](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0545.html#ZH-CN_TOPIC_0000002527986146)。
PL/SQL是一种可载入的过程语言，其应用方法与[存储过程](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0753.html#ZH-CN_TOPIC_0000002558946129)相似，但[存储过程](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0753.html#ZH-CN_TOPIC_0000002558946129)无返回值，PL/SQL语言函数有返回值。
XML类型数据支持作为自定义函数的入参、出参、自定义变量和返回值。
