PostgreSQL中可以使用多种过程语言实现用户定义函数和存储过程对数据库功能进行扩展,这通常称为存储过程。
存储过程一般用于创建触发器或自定义聚合函数。另外存储过程还有许多过程特性,例如控制结构和复杂的计算。方便你更容易、更有效
地开发自定义函数。
如果没有定义函数或存储过程,也可以通过DO命令执行过程代码块。
实现语言
PostgreSQL 中的过程语言主要分为两组:
任何用户可以使用的安全语言。如SQL和PL/pgSQL 是安全语言。
仅超级用户使用的沙箱环境语言。因为沙箱语言提供了绕过安全限制并允许访问外部资源的能力。C语言是沙箱语言的一个例子。
PostgreSQL默认支持三种过程语言: SQL, PL/pgSQL, C语言。我们也可以加载其他语言扩展,如:Perl, Python, TCL等。
存储过程优势
主要包括下列几点:
减少应用和数据库服务器之间的网络传输。所有SQL语句被包装在一个过程中,应用程序紧紧发送一个函数调用命令即可得到执行结果,
而不需要发送多次SQL语句,等待每次调用结果。
提升应用性能。因为自定义函数或过程是在PostgreSQL数据库服务器中是预编译的。
在多个应用中可以重用。一旦开发了一个函数,就可以在任何应用中重复使用。
存储过程劣势
包括下面三点:
开发效率不高。因为存储过程编程需要特定技能,很多开发者没有掌握。
代码版本难以管理,其调试不方便。
对其他数据库系统过程或函数程序不兼容。如Mysql、Microsoft SQL server等。
推荐学习《python教程》!