① 何為存儲過程,舉例說明
存儲過程是一種資料庫對象,它是一組預編譯的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;