存儲過程,實際就是一段寫在資料庫中的代碼。。
由於此段資料庫操作代碼由伺服器完成,而客戶端只是進行簡單的參數提交,所以,可以有效的利用伺服器的強勁而減小對客戶機的負合。
如:你想插入一條數據到資料庫。
雖然你的要求是,先檢查表裡面是否己存在該項。
如果不存在就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
等資料庫沒有此功能。
B. 資料庫系統原理 什麼是存儲過程有什麼優點
存儲過程也可以看成是函數的一種, 而且存儲過程中的過程如果放到了開發 系統的 D 層的時候執行效果也是相同的。 存儲過程是存儲在資料庫中的一個程序 塊, 裡麵包含了自己定義的一段程序來實現相應的功能,比如要選擇資料庫的表 裡面的記錄,就可以使用下面的存儲過程的框架:
這個實現的過程比較簡單, 就是利用的是資料庫自帶的存儲過程的模版,新 建存儲過
程的時候就可以非常方便的實現自己所需要的功能。 存儲過程中使用的 是資料庫的語言, 跟其他的高級語言的用法相似,熟練的使用資料庫的語言可以 加快開發的效率,技術也是很厲害的。 存儲過程的到底有什麼好處呢?一定要用存儲過程嗎? 存儲過程的優點: 1.存儲過程只在創造時進行編譯,以後每次執行存儲過 程都不需再重新編譯,而一般 SQL 語句每執行一次就編譯一次,所以使用存儲過 程可提高資料庫執行速度。 2.當對資料庫進行復雜操作時,可將此復雜操作用 存儲過程封裝起來與資料庫提供的事務處理結合一起使用。更多資料庫的知識, 盡在南京寶雲官網。 3.存儲過程可以重復使用,可減少資料庫開發人員的工作量 4.安全性高,可設定只有某此用戶才具有對指定存儲過程的使用權。 存儲過程有利於實現一系列的操作簡化,提高系統的執行效率,而且放在存 儲過程中的 SQL 語句是直接在資料庫中編譯過了的, 系統在執行的時候就可以減 少這部分代碼的資源開銷。 但是對於機房重構中,有時候我們只需要更新一個記錄中的某一個欄位的值, 這個時候用存儲過程就有點不劃算了,這個時候系統如 果不用存儲過程直接用 SQL 語句來說,是比較方便的。所以存儲過程並不是所有 的地方用都好,凡事都有一個合適的問題,一個度的問題。 可能有的人想存儲過程這么有用,而且對系統的性能有提升,那就強迫症的 都去使用存儲過程。 這里又有一個問題了,存儲過程的作用主要是對資料庫進行 操作, 那麼學過資料庫系統原理的我們就需要注意一個問題了,如何防止死鎖? 毫無節制的使用存儲過程, 而不考慮資料庫結構是不科學的。對於相同的表進行 不同的操作,所產生的結果也是不一樣的,產生的順序也是不一樣的,如何在存 儲過程中進行有效的操作來使系統健康強壯,這是需要注意的。 通過使用存儲過程, 可以更加清晰的理解資料庫和系統是如何相互關聯工作 的,存儲過程的使用不僅是一種技術上的提升,更是思想上的一種啟發,在今後 的開發工作中是否有相同的地方需要這樣的抽象封裝呢。 面對更多的重復出現的 封裝,我們的工作也將更加高效、簡潔。
C. 什麼叫作資料庫的存儲過程
存儲過程就是將常用的或很復雜的工作,預先用SQL語句寫好並用一個指定的名稱存儲起來,並且這樣的語句是放在資料庫中的,還可以根據條件執行不同SQL語句, 那麼以後要叫資料庫提供與已定義好的存儲過程的功能相同的服務時,只需調用execute,即可自動完成命令。 存儲過程的優點 1.存儲過程只在創造時進行編譯即可,以後每次執行存儲過程都不需再重新編譯,而我們通常使用的SQL語句每執行一次就編譯一次,所以使用存儲過程可提高資料庫執行速度。 2.經常會遇到復雜的業務邏輯和對資料庫的操作,這個時候就會用SP來封裝資料庫操作。當對資料庫進行復雜操作時(如對多個表進行Update,Insert,Query,Delete時),可將此復雜操作用存儲過程封裝起來與資料庫提供的事務處理結合一起使用。可以極大的提高資料庫的使用效率,減少程序的執行時間,這一點在較大數據量的資料庫的操作中是非常重要的。在代碼上看,SQL語句和程序代碼語句的分離,可以提高程序代碼的可讀性。 3.存儲過程可以設置參數,可以根據傳入參數的不同重復使用同一個存儲過程,從而高效的提高代碼的優化率和可讀性。 4.安全性高,可設定只有某此用戶才具有對指定存儲過程的使用權存儲過程的種類: (1)系統存儲過程:以sp_開頭,用來進行系統的各項設定.取得信息.相關管理工作,如 sp_help就是取得指定對象的相關信息。 (2)擴展存儲過程 以XP_開頭,用來調用操作系統提供的功能exec master..xp_cmdshell 'ping 10.8.16.1' (3)用戶自定義的存儲過程,這是我們所指的存儲過程常用格式 模版:Create procere procee_name [@parameter data_type][output][with]{recompile|encryption} as sql_statement 解釋:output:表示此參數是可傳回的 with {recompile|encryption} recompile:表示每次執行此存儲過程時都重新編譯一次;encryption:所創建的存儲過程的內容會被加密。
D. 資料庫的存儲過程是什麼,是用來做什麼的
存儲過程就相當於一個方法,是你自定義的一個方法,裡面定義了你需要操作的內容和步驟,當你調用這個存儲過程時候就像調用函數一樣,可以傳遞參數進去
然後就能執行事先寫好的功能
E. 資料庫中的存儲過程是什麼意思
存儲過程(Stored Procere)是一組為了完成特定功能的SQL語句集,經編譯後存儲在資料庫中。用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。
網路一下很多的
F. 資料庫中什麼是存儲過程作用是什麼
存儲過程在SQL中相當有方法或函數在程序中作用是一樣的,
你定義好後,直接調用 就可以了,如果需要的話,還要給它傳遞參數
G. 資料庫中的存儲過程是什麼
存儲過程是存儲在
.dbc
文件中的
Visual
FoxPro
代碼,是專門操作資料庫中數據的代碼過程。存儲過程可以提高資料庫的性能,因為在打開一個資料庫時,它們便載入到了內存中。
使用存儲過程主要是為了創建用戶自定義函數,欄位級規則和記錄級有效性規則將引用這些函數。當把一個用戶自定義函數作為存儲過程保存在資料庫中時,函數的代碼保存在
.dbc
文件中,並且在移動資料庫時,會自動隨資料庫移動。使用存儲過程能使應用程序更容易管理,因為可以不必在資料庫文件之外管理用戶自定義函數。
H. SQL中存儲過程是干什麼用的
存儲過程是在大型資料庫系統中,一組為了完成特定功能的SQL 語句集,它存儲在資料庫中,一次編譯後永久有效,用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是資料庫中的一個重要對象。
資料庫存儲過程的實質就是部署在資料庫端的一組定義代碼以及SQL。將常用的或很復雜的工作,預先用SQL語句寫好並用一個指定的名稱存儲起來,那麼以後要叫資料庫提供與已定義好的存儲過程的功能相同的服務時,只需調用execute,即可自動完成命令。
每個參數名前要有一個「@」符號,每一個存儲過程的參數僅為該程序內部使用,參數的類型除了IMAGE外,其他SQL Server所支持的數據類型都可使用。
(8)存儲過程是什麼資料庫擴展閱讀:
SQL中存儲過程優點:
1、重復使用。存儲過程可以重復使用,從而可以減少資料庫開發人員的工作量。
2、減少網路流量。存儲過程位於伺服器上,調用的時候只需要傳遞存儲過程的名稱以及參數就可以了,因此降低了網路傳輸的數據量。
3、安全性。參數化的存儲過程可以防止SQL注入式攻擊,而且可以將Grant、Deny以及Revoke許可權應用於存儲過程。
4、存儲過程只在創造時進行編譯,以後每次執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高資料庫執行速度。
I. .Net程序中說的存儲過程是什麼意思
存儲過程是資料庫的一個概念
打個比方說,存儲過程就相當於一個存在資料庫中的方法,可以有輸入參數(input),輸出參數(output),返回值(return)
比如一個方法
public
string
GetData(int
id,out
int
rowCount)
參數id代表input
參數rowCount代表output,即可當輸入參數,也可當輸出參數
返回值類似
一個簡單的存儲過程:
create
proc
T_GetData
@id
int
input,
//輸入參數
@rowCount
int
output
//可輸入輸出參數
類似於.net中的out
parameter
AS
begin
select
@rowCount
=
sum(rowname)
from
table1
where
id
=
@id
//這里給output參數賦值
return
'測試而已'
//這里返回值
end
GO
就創建了一個存儲過程,可以跟調用方法一樣很簡單的調用它了
J. 什麼是資料庫存儲過程
SQL的調用可以分為函數和存儲過程。
個人理解,其實函數和存儲過程是相似的,至少在引用的時候跟函數很是一樣。或者乾脆把存儲過程理解為另一種函數,另一種經過優化的函數。它的優點在於,存儲過程在被編譯後會被直接保存在資料庫中,成為資料庫的一部分,以後就可以反復調用,運行速度快,效率高,這些是函數做不到的。