Som*_*one 3 postgresql function
我想知道PostgreSQL的功能是什么.
我什么时候写它们?
我该怎么写呢?
我怎么称呼他们?
来自维基百科的定义:
存储过程是访问关系数据库系统的应用程序可用的子例程.
存储过程的优点一般来自维基百科:
开销:因为存储过程语句直接存储在数据库中,所以它们可能会删除软件应用程序向数据库发送内联(动态)SQL查询时通常需要的全部或部分编译开销.(......)
避免网络流量:存储过程的一个主要优点是它们可以直接在数据库引擎中运行.在生产系统中,这通常意味着过程完全在专用数据库服务器上运行,该服务器可以直接访问所访问的数据.这样做的好处是可以完全避免网络通信成本.这对于复杂的SQL语句系列尤为重要.
封装业务逻辑:存储过程允许程序员将业务逻辑作为API嵌入到数据库中,这可以简化数据管理并减少在客户端程序中的其他位置编码逻辑的需要.(......)
访问权限的委派:在许多系统中,可以向存储过程授予对执行这些过程的用户不直接拥有的数据库的访问权限.
针对SQL注入攻击的一些保护:存储过程可用于防止注入攻击.即使攻击者插入SQL命令,存储过程参数也将被视为数据.(......)
在PostgresSQL中,存储过程称为用户定义的函数.定义示例:
CREATE FUNCTION somefunc(quantity integer) RETURNS integer AS $$
DECLARE
myvariable integer := 2;
BEGIN
RETURN quantity * myvariable;
END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
(您可以使用其他语言在PostgreSQL中定义存储的函数)
调用示例:
SELECT somefunc(100);
Run Code Online (Sandbox Code Playgroud)
更多信息:http://www.postgresql.org/docs/9.1/static/server-programming.html