我想了解什么是PostgreSQL函数。
什么时候需要编写函数?
如何编写函数?
以及如何调用它们?
我想了解什么是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;
在PostgreSQL中,您可以使用其他语言定义存储函数。
调用示例:
SELECT somefunc(100);
主要优势是减少网络流量开销。存储过程与业务逻辑或逻辑层几乎相同(不完全相同)。其主要优势是创建动态企业应用程序。由于缺乏动态数据库结构,您可能会发现数百个好产品失败。存储过程、函数、触发器、序列、索引和数据库的关系性质是创建出色应用程序的真正关键。我的公司总是试图通过存储过程来减少客户端逻辑层。大多数关键逻辑都存储在存储过程中,这使得程序员和测试人员感到满意,并满足他们的时间表。