由于此段数据库 *** 作代码由服务器完成,而客户端只是进行简单的参数提交,所以,可以有效的利用服务器的强劲而减小对客户机的负合。
如:你想插入一条数据到数据库。
虽然你的要求是,先检查表里面是否己存在该项。
如果不存在就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
等数据库没有此功能。
存储过程就是一组保存在数据库中的sql语句,在需要的时候可以调用最简单的,比如
create procedure test as
delete from t_1 ---删除t_1表的所有记录
在sql server查询分析器执行时:
exec test --执行过程test,删除了表t_1的所有记录
当然,没有人这样使用存储过程,存储过程可以接受参数,处理大量sql语句,并返回结果。
当在编写软件的过程中,碰到需要进行复杂的数据库 *** 作时,可能需要大量的sql语句,这时候可以先在数据库中创建存储过程,将sql语句都写在存储过程里,可以视情况加入参数,也可以返回处理结果。编写软件时,在适当的地方引用并执行这个存储过程就好了,至于怎么引用,不同的软件开发语言有不同的语法。
存储过程是预编译的,这样可以提高执行效率,对于软件代码的维护也有好处
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)