何为存储过程,举例说明
发布网友
发布时间:2022-04-22 08:04
我来回答
共3个回答
热心网友
时间:2022-04-11 18:17
存储过程,实际就是一段写在数据库中的代码。。
由于此段数据库操作代码由服务器完成,而客户端只是进行简单的参数提交,所以,可以有效的利用服务器的强劲而减小对客户机的负合。
如:你想插入一条数据到数据库。
虽然你的要求是,先检查表里面是否己存在该项。
如果不存在就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 等数据库没有此功能。
参考资料:我忘了在哪找的
热心网友
时间:2022-04-11 19:35
简单的说,存储过程相当于我们平常的函数,只不过是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
热心网友
时间:2022-04-11 21:09
比如你要根据用户的ID.去查看该用户当前是什么级别.然后按不同的级
别.给该用户不同的奖励.
如果不用存储过程.你是不是得先执行一个select语句.然后再根据返回
值执行一个update语句?
好.现在用存储过程.把上述的过程封装起来.你在程序里只需要调用这个
存储过程.只需要把用户ID传参数进去.其它的操作都在数据库端进行了.
不用你的程序再去判断了.