存储过程基本知识
Microsoft SQL Server 中的存储过程与其他编程语言中的过程类似,原因是存储过程可以:
- 接受输入参数并以输出参数的格式向调用过程或批处理返回多个值。
- 包含用于在数据库中执行操作(包括调用其他过程)的编程语句。
- 向调用过程或批处理返回状态值,以指明成功或失败(以及失败的原因)。
可以使用 Transact-SQL EXECUTE 语句来运行存储过程。存储过程与函数不同,因为存储过程不返回取代其名称的值,也不能直接在表达式中使用。
在 SQL Server 中使用存储过程而不使用存储在客户端计算机本地的 Transact-SQL 程序的好处包括:
- 存储过程已在服务器注册。
- 存储过程具有安全特性(例如权限)和所有权链接,以及可以附加到它们的证书。
用户可以被授予权限来执行存储过程而不必直接对存储过程中引用的对象具有权限。 - 存储过程可以强制应用程序的安全性。
参数化存储过程有助于保护应用程序不受 SQL Injection 攻击。有关详细信息,请参阅 SQL Injection。 - 存储过程允许模块化程序设计。
存储过程一旦创建,以后即可在程序中调用任意多次。这可以改进应用程序的可维护性,并允许应用程序统一访问数据库。 - 存储过程是命名代码,允许延迟绑定。
这提供了一个用于简单代码演变的间接级别。 - 存储过程可以减少网络通信流量。
一个需要数百行 Transact-SQL 代码的操作可以通过一条执行过程代码的语句来执行,而不需要在网络中发送数百行代码。