什么是 “存储过程” ,它们是如何工作的?
存储过程的组成是什么(每个都 必须 是存储过程)?
存储过程是一组可以通过多种方式执行的 SQL 语句。大多数主要的 DBM 都支持存储过程;但是,并非所有人都这样做。您将需要使用特定的 DBMS 帮助文档来验证细节。因为我最熟悉 SQL Server,所以我将使用它作为我的示例。
要创建存储过程,语法相当简单:
CREATE PROCEDURE <owner>.<procedure name> <Param> <datatype> AS <Body>
例如:
CREATE PROCEDURE Users_GetUserInfo @login nvarchar(30)=null AS SELECT * from [Users] WHERE ISNULL(@login,login)=login
存储过程的一个好处是您可以将数据访问逻辑集中到一个地方,这样 DBA 就可以轻松地对其进行优化。存储过程还具有安全优势,您可以授予存储过程执行权限,但用户不需要对基础表具有读/写权限。这是对抗 SQL 注入的良好第一步。
存储过程确实有缺点,基本上是与基本CRUD操作相关的维护。假设对于每个表,您有一个插入、更新、删除和至少一个基于主键的选择,这意味着每个表将有 4 个过程。现在使用一个包含 400 个表的大小合适的数据库,并且您有 1600 个程序!这是假设你没有你可能会有的重复项。
这就是使用ORM或其他方法自动生成基本 CRUD 操作的优点。