什麼是sql的存儲過程
Ⅰ 什麼是存儲過程有什麼優點
存儲過程是事先經過編譯並存儲在資料庫中的一段sql語句的集合,調用存儲過程可以簡化應用開發人員的很多工作,減少數據在資料庫和應用伺服器之間的傳輸,對於提高數據處理的效率是有好處的。
優點:
1、重復使用:存儲過程可以重復使用,從而可以減少資料庫開發人員的工作量。
2、減少網路流量:存儲過程位於伺服器上,調用的時候只需要傳遞存儲過程的名稱以及參數就可以了,因此降低了網路傳輸的數據量。
3、安全性:參數化的存儲過程可以防止SQL注入式攻擊,而且可以將Grant、Deny以及Revoke許可權應用於存儲過程。
(1)什麼是sql的存儲過程擴展閱讀:
存儲過程的缺點:
1、更改比較繁瑣:如果更改范圍大到需要對輸入存儲過程的參數進行更改,或者要更改由其返回的數據,則仍需要更新程序集中的代碼以添加參數、更新 GetValue() 調用,等等,這時候估計比較繁瑣。
2、可移植性差:由於存儲過程將應用程序綁定到 SQL Server,因此使用存儲過程封裝業務邏輯將限制應用程序的可移植性。如果應用程序的可移植性在您的環境中非常重要,則需要將業務邏輯封裝在不特定於 RDBMS 的中間層中。
Ⅱ 在SQL中什麼是存儲過程使用存儲過程有什麼好處
什麼是存儲過程?分為哪幾類?
答:存儲過程是SQL語句和可選控制流語句的預編譯集合,以一個名稱存儲並作為一個單元處理。
1.使用存儲過程有什麼好處?
答:優點:(1)提供安全機制(2)改進了執行性能(3)減少網路流量(4)允許模塊化程序設計
Ⅲ SQL中存儲過程是干什麼用的
存儲過程是在大型資料庫系統中,一組為了完成特定功能的SQL 語句集,它存儲在資料庫中,一次編譯後永久有效,用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是資料庫中的一個重要對象。
資料庫存儲過程的實質就是部署在資料庫端的一組定義代碼以及SQL。將常用的或很復雜的工作,預先用SQL語句寫好並用一個指定的名稱存儲起來,那麼以後要叫資料庫提供與已定義好的存儲過程的功能相同的服務時,只需調用execute,即可自動完成命令。
每個參數名前要有一個「@」符號,每一個存儲過程的參數僅為該程序內部使用,參數的類型除了IMAGE外,其他SQL Server所支持的數據類型都可使用。
(3)什麼是sql的存儲過程擴展閱讀:
SQL中存儲過程優點:
1、重復使用。存儲過程可以重復使用,從而可以減少資料庫開發人員的工作量。
2、減少網路流量。存儲過程位於伺服器上,調用的時候只需要傳遞存儲過程的名稱以及參數就可以了,因此降低了網路傳輸的數據量。
3、安全性。參數化的存儲過程可以防止SQL注入式攻擊,而且可以將Grant、Deny以及Revoke許可權應用於存儲過程。
4、存儲過程只在創造時進行編譯,以後每次執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高資料庫執行速度。
Ⅳ sql 存儲過程 概念
在關系資料庫中,SQL語言是應用程序和資料庫管理系統之間的主要交流方法,使用SQL語言編寫代碼時,可以用兩種方法存儲和執行代碼。一種是在客戶端存儲代碼,並創建向資料庫管理系統發送SQL命令並處理返回結果的應用程序;第二種是將這些SQL語句存儲在資料庫管理系統中,這些存儲在資料庫管理系統中的Sql語句就是存儲過程,然後再創建執存儲過程並處理返回結果的應用程序。
例如:你想在很多表中取某些記錄,如果用SQL語言的話很長很復雜,你可以在資料庫里編寫一個存儲過程,這時你用VB,C語言編寫的應用程序代碼里就只要給出存儲過程的名稱就行了
Ⅳ 「SQL Server的存儲過程」是什麼意思
在使用 Microsoft® SQL Server™ 2000 創建應用程序時,Transact-SQL 編程語言是應用程序和 SQL Server 資料庫之間的主要編程介面。使用 Transact-SQL 程序時,可用兩種方法存儲和執行程序。可以在本地存儲程序,並創建向 SQL Server 發送命令並處理結果的應用程序;也可以將程序在 SQL Server 中存儲為存儲過程,並創建執行存儲過程並處理結果的應用程序。
SQL Server 中的存儲過程與其它編程語言中的過程類似,原因是存儲過程可以:
接受輸入參數並以輸出參數的形式將多個值返回至調用過程或批處理。
包含執行資料庫操作(包括調用其它過程)的編程語句。
向調用過程或批處理返回狀態值,以表明成功或失敗(以及失敗原因)。
可使用 Transact-SQL EXECUTE 語句運行存儲過程。存儲過程與函數不同,因為存儲過程不返回取代其名稱的值,也不能直接用在表達式中。
使用 SQL Server 中的存儲過程而不使用存儲在客戶計算機本地的 Transact-SQL 程序的優勢有:
允許模塊化程序設計。
只需創建過程一次並將其存儲在資料庫中,以後即可在程序中調用該過程任意次。存儲過程可由在資料庫編程方面有專長的人員創建,並可獨立於程序源代碼而單獨修改。
允許更快執行。
如果某操作需要大量 Transact-SQL 代碼或需重復執行,存儲過程將比 Transact-SQL 批代碼的執行要快。將在創建存儲過程時對其進行分析和優化,並可在首次執行該過程後使用該過程的內存中版本。每次運行 Transact-SQL 語句時,都要從客戶端重復發送,並且在 SQL Server 每次執行這些語句時,都要對其進行編譯和優化。
減少網路流量。
一個需要數百行 Transact-SQL 代碼的操作由一條執行過程代碼的單獨語句就可實現,而不需要在網路中發送數百行代碼。
可作為安全機制使用。
即使對於沒有直接執行存儲過程中語句的許可權的用戶,也可授予他們執行該存儲過程的許可權。
SQL Server 存儲過程是用 Transact-SQL 語句 CREATE PROCEDURE 創建的,並可用 ALTER PROCEDURE 語句進行修改。存儲過程定義包含兩個主要組成部分:過程名稱及其參數的說明,以及過程的主體(其中包含執行過程操作的 Transact-SQL 語句)。
Ⅵ 什麼是存儲過程Sql 存儲過程知識詳解
存儲過程的好處: 1.由於資料庫執行動作時,是先編譯後執行的。然而存儲過程是一個編譯過的代碼塊,所以執行效率要比T-SQL語句高。 2.一個存儲過程在程序在網路中交互時可以替代大堆的T-SQL語句,所以也能降低網路的通信量,提高通信速率。 3.通過存儲過程能夠使沒有許可權的用戶在控制之下間接地存取資料庫,從而確保數據的安全。 小結:總之存儲過程是好東西,在做項目時屬於必備利器,下面介紹存儲過程的基本語法。存儲過程的語法和參數講解存儲過程的一些基本語法:--------------創建存儲過程----------------- CREATE PROC [ EDURE ] procere_name [ ; number ] [ { @parameter data_type } [ VARYING ] [ = default ] [ OUTPUT ] ] [ ,...n ] [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS sql_statement [ ...n ] --------------調用存儲過程----------------- EXECUTE Procere_name '' --存儲過程如果有參數,後面加參數格式為:@參數名=value,也可直接為參數值value --------------刪除存儲過程----------------- drop procere procere_name --在存儲過程中能調用另外一個存儲過程,而不能刪除另外一個存儲過程
Ⅶ SQL的存儲過程是什麼
存儲過程(Stored Procere)是一組為了完成特定功能的SQL語句集,經編譯後存儲在資料庫中。用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是資料庫中的一個重要對象,任何一個設計良好的資料庫應用程序都應該用到存儲過程。總的來說,存儲過程具有以下一些優點:
◆存儲過程允許標准組件式編程
◆存儲過程能夠實現較快的執行速度
◆存儲過程能夠減少網路流量
◆存儲過程可被作為一種安全機制來充分利用
基本語法如下:
完整的語法規則如下:
CREATE PROC [ EDURE ] procere_name [ ; number ]
[ { @parameter data_type }
[ VARYING ] [ = default ] [ OUTPUT ]
] [ ,...n ]
[ WITH
{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]
[ FOR REPLICATION ]
AS sql_statement [ ...n ]
Ⅷ sql 存儲過程 概念
枯燥雜亂的網文不給你轉了,用我自己的詞彙給你組織一下這個概念吧:
你可以把存儲過程當做:把一系列語句合並到一起的這么一個整體
我覺得舉例說明比較好,給你個例子:
先將【表1】中ID號為50—2000的記錄刪除、
再將【表2】中的這些記錄的狀態(STATUS)改為「已解除」:
delete 表1 where ID > 50 and ID < 2000
update 表2 set STATUS = '已解除' where ID > 50 and ID < 2000
正常情況下,以上兩條語句分步執行就可以了,如果要用存儲過程呢?
先建立存儲過程(以下的語法為Sybase資料庫的,其他資料庫類同):
create procere PRC_TEST (@start_ID int, @end_ID int)
as
begin
delete 表1 where ID > @start_ID and ID < @end_ID
update 表2 set STATUS = '已解除' where ID > @start_ID and ID < @end_ID
end
好了,執行這個語句,就將存儲過程PRC_TEST提交到資料庫里了,它有兩個參數:start_ID int 和 end_ID,代表起始和終止ID號,類型為整數型int
怎麼用這個存儲過程呢? 這樣執行:exc PRC_TEST 50, 2000
執行時,它先得到了兩個參數,50、2000,分別賦值給start_ID int 和 end_ID,然後按照這兩個參數分步執行封裝在存儲過程里的那兩條語句了。
如果你這樣執行:exc PRC_TEST 220, 8660
就是處理兩個表中ID介於220—8660之間的記錄了。
----------------------------------------------------------------------------
你也許會問了,既然可以分步執行的幾句SQL,為什麼要費力的寫成存儲過程啊?
主要是(我的經驗和認識):
1、使數據處理參數化,對經常使用的一系列SQL進行封裝,使其成為一個存儲過程的整體,在每次執行時只要更換執行參數即可,不用去改裡面每句SQL的where子句
2、★★這個很重要★★,假設你要循環處理某些數據,例如需要使用「游標」、「Do...while...語句」…………時,就要用到存儲過程(或觸發器)
=====================================================================
最後給你轉一個短文吧,這是書面上的概念:
將常用的或很復雜的工作,預先用SQL語句寫好並用一個指定的名稱存儲起來, 那麼以後要叫資料庫提供與已定義好的存儲過程的功能相同的服務時,只需調用execute,即可自動完成命令。
那麼存儲過程與一般的SQL語句有什麼區別呢?
存儲過程的優點:
1.存儲過程只在創造時進行編譯,以後每次執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高資料庫執行速度。
2.當對資料庫進行復雜操作時(如對多個表進行Update,Insert,Query,Delete時),可將此復雜操作用存儲過程封裝起來與資料庫提供的事務處理結合一起使用。
3.存儲過程可以重復使用,可減少資料庫開發人員的工作量
4.安全性高,可設定只有某此用戶才具有對指定存儲過程的使用權
存儲過程的種類:
1.系統存儲過程:以prc_(或sp_)開頭,用來進行系統的各項設定.取得信息.相關管理工作,
如 sp_help就是取得指定對象的相關信息
2.擴展存儲過程 以XP_開頭,用來調用操作系統提供的功能
exec master..xp_cmdshell 'ping 10.8.16.1'
3.用戶自定義的存儲過程,這是我們所指的存儲過程
Ⅸ sql存儲過程是什麼
所有設計優良的 Microsoft® SQL Server™ 2000 應用程序都應當使用存儲過程。不論是否將應用程序的業務邏輯寫入存儲過程都應如此。甚至連沒有業務邏輯組件的標准 Transact-SQL 語句,在用參數打包成存儲過程後也能獲得性能收益。編譯進存儲過程的 Transact-SQL 語句在執行時可省去大量的處理。
存儲過程的另一個優點是客戶端執行請求使用網路的效率比將等效的 Transact-SQL 語句發送到伺服器高。例如,假設應用程序需要將一個大的二進制值插入 image 數據列。為使用 INSERT 語句發送數據,該應用程序必須將該二進制值轉換為字元串(其大小翻倍),然後發送到伺服器。伺服器再將該值轉換回二進制格式以存儲在 image 列中。
相反,應用程序可以創建下列格式的存儲過程:
CREATE PROCEDURE P(@p1 image) AS INSERT T VALUES (@p1)
當客戶端應用程序請求執行過程 P 時,image 參數值將一直以二進制格式發送到伺服器,從而節省處理時間並減少網路流量。
如果 SQL Server 存儲過程中包含業務服務邏輯,因為業務服務邏輯將處理移動到數據,而不是將數據移動到處理,因而存儲過程能提供更大的性能收益。
存儲過程的優點
(1)存儲過程的能力大大增強了SQL語言的功能和靈活性。存儲過程可以用流控制語句編寫,有很強的靈活性,可以完成復雜的判斷和較復雜的 運算。
(2) 可保證數據的安全性和完整性。
● 通過存儲過程可以使沒有許可權的用戶在控制之下間接地存取資料庫,從而保證數據的安全。
● 通過存儲過程可以使相關的動作在一起發生,從而可以維護資料庫的完整性。
(3) 再運行存儲過程前,資料庫已對其進行了語法和句法分析,並給出了優化執行方案。這種已經編譯好的過程可極大地改善SQL語句的性能。 由於執行SQL語句的大部分工作已經完成,所以存儲過程能以極快的速度執行。
(4)可以降低網路的通信量。
(5) 使體現企業規則的運算程序放入資料庫伺服器中,以便:
● 集中控制。
● 當企業規則發生變化時在伺服器中改變存儲過程即可,無須修改任何應用程序。企業規則的特點是要經常變化,如果把體現企業規則的運算程序放入應用程序中,則當企業規則發生變化時,就需要修改應用程序工作量非常之大(修改、發行和安裝應用程序)。如果把體現企業規則的 運算放入存儲過程中,則當企業規則發生變化時,只要修改存儲過程就可以了,應用程序無須任何變化。
1.使用企業管理器創建用戶存儲過程
操作步驟如下:
(1)啟動SQL Server企業管理器。
(2)在「控制台根目錄」窗口,展開「SQL Server組」,首先,選擇「資料庫」,然後,選擇「存儲過程」,單擊滑鼠右鍵,打開快捷菜單。
(3)在打開快捷菜單中,選擇「新建存儲過程」菜單命令,進入「存儲過程屬性」窗口。
(4)在「存儲過程屬性」窗口,在文本框中輸入存儲過程代碼,單擊「確定」,結束存儲過程的創建。
2.使用T-SQL語句創建用戶存儲過程
SQL命令格式:
CREATE PROC [ EDURE ] <Procere_name> [ ; Number ]
[ { @parameter Data_type }
[ VARYING ] [ = Default ] [ OUTPUT ]] [ ,...n ]
[ WITH{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION }]
[ FOR REPLICATION ]
AS sql_statements
功能:創建一個用戶存儲過程,並保存在資料庫中。
Ⅹ sql存儲過程是什麼
sql存儲過程說簡單點就是一個在t-sql下用戶可以自行定義的函數,
但是與一般的函數也有不同的地方,比如它的返回值只能RETURN(INT類型),如果你要輸出什麼信息的話只能用OUTPUT.這也是存儲過程的一個特色吧,設定的參數可以有輸出。講起來有點抽象,給你個例子看看吧!
首先創建一個存儲過程
CREATE
PROCEDURE
cunchuguocheng
@a
int,
@b
int,
@c
int
output
as
begin
select
@c
=
@a+@b
return(0)
end
然後調用這個存儲過程
declare
@value
int,
--返回值
@c
int
--結果值
exec
@value
=
cunchuguocheng
2,2,@c
output
select
@value
as
返回值
select
@c
as
結果值
程序寫的很簡單,你運行一下我想你就會對存儲過程有所了解了。