什么是“存储过程”,它们是如何工作的?
存储过程的组成是什么(每个存储过程都必须是存储过程)?
发布于 2009-01-19 22:57:15
存储过程是一批SQL语句,可以通过几种方式执行。大多数主要的DBMs支持存储过程;然而,并不是所有的数据库管理系统都支持。您需要使用特定的DBMS帮助文档来验证细节。由于我最熟悉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操作相关联的维护。假设每个表都有一个Insert、Update、Delete和至少一个基于主键的选择,这意味着每个表将有4个过程。现在拿一个相当大的数据库400张表,你有1600程序!这是假设你没有重复的,你很可能会。
这就是使用奥姆或其他方法自动生成基本CRUD操作的地方。
发布于 2013-06-13 10:16:48
存储过程是用于执行特殊任务的一组预编译SQL语句。
示例:如果我有一个Employee表
Employee ID Name Age Mobile
---------------------------------------
001 Sidheswar 25 9938885469
002 Pritish 32 9178542436首先,我将检索Employee表:
Create Procedure Employee details
As
Begin
Select * from Employee
End若要在Server上运行该过程,请执行以下操作:
Execute Employee details
--- (Employee details is a user defined name, give a name as you want)其次,我要将值插入员工表中。
Create Procedure employee_insert
(@EmployeeID int, @Name Varchar(30), @Age int, @Mobile int)
As
Begin
Insert Into Employee
Values (@EmployeeID, @Name, @Age, @Mobile)
End若要在Server上运行参数化过程:
Execute employee_insert 003,’xyz’,27,1234567890
--(Parameter size must be same as declared column size)示例:@Name Varchar(30)
在Employee表中,Name列的大小必须是varchar(30)。
发布于 2014-04-09 12:01:47
存储过程是已创建并存储在数据库中的一组SQL语句。存储过程将接受输入参数,因此多个客户端可以使用不同的输入数据通过网络使用单个过程。存储过程将减少网络流量并提高性能。如果修改存储过程,所有客户端都将得到更新的存储过程。
创建存储过程的示例
CREATE PROCEDURE test_display
AS
SELECT FirstName, LastName
FROM tb_test;
EXEC test_display;使用存储过程的优点
- System stored procedures
- User-defined stored procedures
- Extended stored Procedures
sp_前缀开始。这些过程可用于执行各种任务,以支持系统表中的外部应用程序调用的Server功能
例子: sp_helptext StoredProcedure_Namesp_前缀,因为如果我们首先使用sp_前缀,它将检查主数据库,然后再检查用户定义的数据库。https://stackoverflow.com/questions/459457
复制相似问题