① 何为存储过程,举例说明
存储过程是一种数据库对象,它是一组预编译的SQL语句,可以接受输入参数并返回输出参数。存储过程在服务器端执行,客户端只需提交参数,因此可以有效利用服务器资源,减轻客户端负担。
以插入数据为例,假设需要先检查表中是否存在该项,如果不存在则插入,如果存在则更新。这时可以使用存储过程实现这一功能。以下是一个简单的存储过程示例:
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
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等数据库不支持此功能。
② oracle数据库如何利用存储过程向表中添加数据
实际上存储过程向表中插入数据和sql执行的区别是不大的,只不过是存储过程是用loop等循环插入,之后顺序执行sql语句,不用命令行执行。
_data_4_pressure_3
is
--Result1VARCHAR2(50);
VAR_numnumber;
begin
VAR_num:=1;
while
VAR_num<1000000
LOOP
insertintorp_trans_log_day
(trans_time,
trans_province,
trans_type,
score_range,
rule_name,
trans_num)
selectto_date('2013/10/29','yyyy-mm-dd'),
round(dbms_random.value(1,300))||'省',
round(dbms_random.value(1,800))||'类型',
round(dbms_random.value(1,100))||'风险分值',
round(dbms_random.value(1,300))||'规则名称',
'1'
fromal;
commit;
VAR_num:=VAR_num+1;
endloop;
endinsert_data_4_pressure_3;