何为存储过程,举例说明

2025-02-27 02:09:24
推荐回答(3个)
回答1:

存储过程,实际就是一段写在数据库中的代码。。

由于此段数据库操作代码由服务器完成,而客户端只是进行简单的参数提交,所以,可以有效的利用服务器的强劲而减小对客户机的负合。

如:你想插入一条数据到数据库。

虽然你的要求是,先检查表里面是否己存在该项。

如果不存在就Insert,如果存在就UPDATE。

这个时候,你就可以把这个判断用存储过程来写。

你的程序只要提示你想要保存到数据库里面的东西即可。

下面就是一个简单的存储过程。

CREATE PROCEDURE [insert_A_Employees]
(@fWorkNo [int],
@fWorkName [char](10),
@fDeptName [varchar](20),
@fGroupName [varchar](20),
@fRecordDate [datetime])

AS

declare @iCount int

select @iCount = count(*) from A_EMPLOYEES where @fWorkNo = fWORKNO --统计该工号在数据库的数量赋值给 @iCount

if @iCount = 0 --如果数据库中不存在该工号
begin

INSERT INTO [CLKQ].[dbo].[A_Employees] --则插入数据
( [fWorkNo],
[fWorkName],
[fDeptName],
[fGroupName],
[fRecordDate])

VALUES
( @fWorkNo,
@fWorkName,
@fDeptName,
@fGroupName,
@fRecordDate)

return 1 --返回一个标识

end else begin --否则则更新数据

update [CLKQ].[dbo].[A_Employees]

set [fWorkName]=@fWorkName,
[fDeptName]=@fDeptName,
[fGroupName]=@fGroupName,
[fRecordDate]=@fRecordDate

where [fWorkNo]=@fWorkNo

return 0 --返回一个标识

end
GO

此时你只要在客户端程序提供:

@fWorkNo ,
@fWorkName ,
@fDeptName ,
@fGroupName ,
@fRecordDate

这几个值就行了。。

其它处理过程就由服务器方处理了。

以上是以 SQL 数据库为例。。。

ACCESS 等数据库没有此功能。

回答2:

简单的说,存储过程相当于我们平常的函数,只不过是SQL语言来实现
以下为一个简单例子
--创建存储过程(这里只简单示例,当然这里可以写很复杂的逻辑)
create proc proc_student as
select * from student
select * from student where sex='man'
select * from student where sex='woman'
go

--调用存储过程
exec proc_student

回答3:

比如你要根据用户的ID.去查看该用户当前是什么级别.然后按不同的级

别.给该用户不同的奖励.

如果不用存储过程.你是不是得先执行一个select语句.然后再根据返回

值执行一个update语句?

好.现在用存储过程.把上述的过程封装起来.你在程序里只需要调用这个

存储过程.只需要把用户ID传参数进去.其它的操作都在数据库端进行了.

不用你的程序再去判断了.