cd52ba437424765122?

General 更新 2024-11-26

什麼是儲存過程?有什麼優點?

儲存過程是一組予編譯的SQL語句

它的優點:1.允許模組化程式設計,就是說只需要建立一次過程,以後在程式中就可以呼叫該過程任意次。

2.允許更快執行,如果某操作需要執行大量SQL語句或重複執行,儲存過程比SQL語句執行的要快。

3.減少網路流量,例如一個需要數百行的SQL程式碼的操作有一條執行語句完成,不需要在網路中傳送數百行程式碼。

4.更好的安全機制,工於沒有許可權執行儲存過程的使用者,也可授權他們執行儲存過程。

為什麼要使用儲存過程?

幾個去 IBM 面試的兄弟回來抱怨:去了好幾個不同的 IBM專案組,幾乎每個面試官問到資料庫的時候都要問用沒用過儲存過程,煩人不?大家去面的程式設計師,又不是筆者認為,儲存過程說白了就是一堆 SQL 的合併。中間加了點邏輯控制。但是儲存過程處理比較複雜的業務時比較實用。比如說,一個複雜的資料操作。如果你在前臺處理的話。可能會涉及到多次資料庫連線。但如果你用儲存過程的話。就只有一次。從響應時間上來說有優勢。也就是說儲存過程可以給我們帶來執行效率提高的好處。另外,程式容易出現 BUG資料量小的,或者和錢沒關係的專案不用儲存過程也可以正常運作。mysql 的儲存過程還有待實際測試。如果是正式專案,建議你用 sqlserver 或 oracle的儲存過程。資料與資料之間打交道的話,過程會比程式來的快的多。面試官問有沒有用儲存,實際上就是想知道前來面試的程式設計師到底做過資料量大的專案沒。如果是培訓出來的,或者小專案小公司出來的,對儲存肯定接觸的少了。所以,要想進大公司,沒有豐富儲存過程經驗,是不行的。錯。儲存過程不僅僅適用於大型專案,對於中小型專案,使用儲存過程也是非常有必要的。其威力和優勢主要體現在:1.儲存過程只在創造時進行編譯,以後每次執行儲存過程都不需再重新編譯,而一般 SQL語句每執行一次就編譯一次,所以使用儲存過程可提高資料庫執行速度。2.當對資料庫進行復雜操作時(如對多個表進行Update,Insert,Query,Delete時),可將此複雜操作用儲存過程封裝起來與資料庫提供的事務處理結合一起使用。這些操作,如果用程式來完成,就變成了一條條的 SQL語句,可能要多次連線資料庫。而換成儲存,只需要連線一次資料庫就可以了。3.儲存過程可以重複使用,可減少資料庫開發人員的工作量。4.安全性高,可設定只有某此使用者才具有對指定儲存過程的使用權。 儲存過程的缺點1:除錯麻煩,但是用 PL/SQL Developer 除錯很方便!彌補這個缺點。   2:移植問題,資料庫端程式碼當然是與資料庫相關的。但是如果是做工程型專案,基本不存在移植問題。   3:重新編譯問題,因為後端程式碼是執行前編譯的,如果帶有引用關係的物件發生改變時,受影響的儲存過程、包將需要重新編譯(不過也可以設定成執行時刻自動編譯)。  4:如果在一個程式系統中大量的使用儲存過程,到程式交付使用的時候隨著使用者需求的增加會導致資料結構的變化,接著就是系統的相關問題了,最後如果使用者想維護該系統可以說是很難很難、而且代價是空前的。維護起來更加麻煩!

儲存過程是什麼?有什麼用?有什麼優點?

儲存過程很明顯幫助你能完成一個複雜的業務邏輯處理,並且這個處理是在資料庫完成的能夠節省程式執行效率,儲存過程可以執行一個業務處理並且可以帶有返回資訊或者沒返回資訊,這個根據你個人需要而定,跟資料庫函式有點想象,但是還有不同。希望對你有幫助。

sql中是什麼是儲存過程,有哪些作用

儲存過程是在大型資料庫系統中,一組為了完成特定功能的SQL 語句集,儲存在資料庫中,經過第一次編譯後再次呼叫不需要再次編譯,使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。儲存過程是資料庫中的一個重要物件,任何一個設計良好的資料庫應用程式都應該用到儲存過程。

儲存過程中可以包含邏輯控制語句和資料操縱語句,它可以接受引數、輸出引數、返回單個或多個結果集以及返回值。

由於儲存過程在建立時即在資料庫伺服器上進行了編譯並存儲在資料庫中,所以儲存過程執行要比單個的SQL語句塊要快。同時由於在呼叫時只需用提供儲存過程名和必要的引數資訊,所以在一定程度上也可以減少網路流量、簡單網路負擔。

資料庫中儲存過程有什麼主要作用,或都說它的主要用途?

儲存過程的概念

儲存過程(Stored Procedure)是一組預先編繹好的Transact-SQL語句。將其放在伺服器上,由使用者通過指定儲存過程的名字來執行它。儲存過程可以作為一個獨立的資料庫物件,也可以作為一個單元被使用者的應用程式呼叫。儲存過程可以接收和輸出引數,返回執行儲存過程的狀態值,還可以巢狀呼叫。

儲存過程同其他程式語言中的過程(Procedure)類似,主要體現在以下幾個方面:

(1)儲存過程可以接收引數,並以接收引數的形式返回多個引數給呼叫儲存過程和批處理。

(2)包含執行資料庫操作的程式設計語句,也可以呼叫其他的儲存過程。

(3)向呼叫過程或批處理返回狀態值,以反映儲存過程的執行情況。

注意:儲存過程跟函式不同,儲存過程不能在被呼叫的位置上返回資料,也不能被應用在語句當中,例如不可以用類似“@Proc=儲存過程名”的方式使用儲存過程。但是,儲存過程可以使用變數的形式來返回引數。

儲存過程的優點表現在以下幾個方面:

(1)執行速度快

儲存過程在建立時就經過了語法檢查和效能優化,因此在執行時不必再重複這些步驟。儲存過程在第一次呼叫後,就駐留在記憶體中,不必再經過編譯和優化,所以執行速度很快。在有大量批處理的Transact-SQL語句要重複執行的時候,使用儲存過程可以極大地提高執行效率。

(2)模組化程式設計

只需建立儲存過程一次,並將其儲存在資料庫中,可以在程式中多次呼叫該儲存過程。使用者可以獨立於應用程式而對儲存過程進行修改。

(3)減少網路通訊量

儲存過程中可以包含大量的Transact-SQL語句。在進行呼叫時,只需要使用一條語句就可以實現,而不需要在網路中傳送數百行程式碼。

(4)保證系統的安全性

可以設定使用者通過儲存過程來對某些關鍵資料進行訪問,但不允許使用者直接使用Transact-SQL語句或企業管理器來對資料進行訪問。

sql儲存過程有啥用

Transact-SQL中的儲存過程,非常類似於Java語言中的方法,它可以重複呼叫。當儲存過程執行一次後,可以將語句快取中,這樣下次執行的時候直接使用快取中的語句。這樣就可以提高儲存過程的效能。

Ø 儲存過程的概念

儲存過程Procedure是一組為了完成特定功能的SQL語句集合,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名稱並給出引數來執行。

儲存過程中可以包含邏輯控制語句和資料操縱語句,它可以接受引數、輸出引數、返回單個或多個結果集以及返回值。

由於儲存過程在建立時即在資料庫伺服器上進行了編譯並存儲在資料庫中,所以儲存過程執行要比單個的SQL語句塊要快。同時由於在呼叫時只需用提供儲存過程名和必要的引數資訊,所以在一定程度上也可以減少網路流量、簡單網路負擔。

1、 儲存過程的優點

A、 儲存過程允許標準組件式程式設計

儲存過程建立後可以在程式中被多次呼叫執行,而不必重新編寫該儲存過程的SQL語句。而且資料庫專業人員可以隨時對儲存過程進行修改,但對應用程式原始碼卻毫無影響,從而極大的提高了程式的可移植性。

B、 儲存過程能夠實現較快的執行速度

如果某一操作包含大量的T-SQL語句程式碼,分別被多次執行,那麼儲存過程要比批處理的執行速度快得多。因為儲存過程是預編譯的,在首次執行一個儲存過程時,查詢優化器對其進行分析、優化,並給出最終被存在系統表中的儲存計劃。而批處理的T-SQL語句每次執行都需要預編譯和優化,所以速度就要慢一些。

C、 儲存過程減輕網路流量

對於同一個針對資料庫物件的操作,如果這一操作所涉及到的T-SQL語句被組織成一儲存過程,那麼當在客戶機上呼叫該儲存過程時,網路中傳遞的只是該呼叫語句,否則將會是多條SQL語句。從而減輕了網路流量,降低了網路負載。 D、 儲存過程可被作為一種安全機制來充分利用

系統管理員可以對執行的某一個儲存過程進行許可權限制,從而能夠實現對某些資料訪問的限制,避免非授權使用者對資料的訪問,保證資料的安全。

Ø 系統儲存過程

系統儲存過程是系統建立的儲存過程,目的在於能夠方便的從系統表中查詢資訊或完成與更新資料庫表相關的管理任務或其他的系統管理任務。系統儲存過程主要儲存在master資料庫中,以“sp”下劃線開頭的儲存過程。儘管這些系統儲存過程在master資料庫中,但我們在其他資料庫還是可以呼叫系統儲存過程。有一些系統儲存過程會在建立新的資料庫的時候被自動建立在當前資料庫中。

oracle中的儲存過程,有什麼作用,以及怎麼在程式碼中使用?

樓上也不知道從哪扒下來的,一看LZ就是初學,舉點例子不行嗎?

比如建立個測試表

create table test(id int,name varchar2(10),counts int); insert into test values (1,'張三',100);insert into test values (2,'李四',200); commit;

現在給你出個題目是

查詢所有人加在一起的counts是多少

建立儲存過程

create or replace p_test --建立儲存過程,asv_counts int;--定義變數begin --開始select sum(counts) into v_counts from test;--將得到的結果放到變數裡DBMS_OUTPUT.PUT_LINE(v_counts);--將結果列印輸出end;--結束

執行這種不帶輸入引數的

begin p_test;end;

然後你檢查下結果

再給你建立一個帶輸入引數的

題目是,查詢id為1的人名是什麼

create or replace p_test1(v_id int)asv_name varchar2(10);beginselect name into v_name from test where id=v_id;DBMS_OUTPUT.PUT_LINE(v_name);end;

執行時這樣

beginp_test1(1);end;

第2個我沒給你寫註釋,你看你自己應該能理解吧

補充一下,儲存過程不一定只是執行查詢,也可以做刪除或者修改等sql語句,總體來說就是幾個或N個sql語句的集合,來完成系統內某些特定的需求,這些需求可以是一個sql搞定的,也可以是多個sql組合的

ORACLE 儲存過程是什麼? 它的用處,好處是什麼?概念性的東西多點。。

定義:儲存過程(Stored Procedure )是一組為了完成特定功能的SQL 語句集,經編譯後儲存在資料庫中。使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。儲存過程是資料庫中的一個重要物件,任何一個設計良好的資料庫應用程式都應該用到儲存過程。

儲存過程是由流控制和SQL 語句書寫的過程,這個過程經編譯和優化後儲存在資料庫伺服器中,應用程式使用時只要呼叫即可。在ORACLE 中,若干個有聯絡的過程可以組合在一起構成程式包。

優點:

1.儲存過程只在創造時進行編譯,以後每次執行儲存過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用儲存過程可提高資料庫執行速度。

2.當對資料庫進行復雜操作時(如對多個表進行Update、Insert、Query、Delete時),可將此複雜操作用儲存過程封裝起來與資料庫提供的事務處理結合一起使用。

3.儲存過程可以重複使用,可減少資料庫開發人員的工作量。

4.安全性高,可設定只有某使用者才具有對指定儲存過程的使用權。

簡單說,你在你的機器上寫了個儲存過程,這個儲存過程像那些表裡的資料一樣被放在遙遠的資料庫伺服器當中,但是它又是可執行的程式碼,其他能連到資料庫伺服器的使用者,可以呼叫你寫的儲存過程

它的作用是隱藏細節,就是說,你寫的儲存過程程式碼可能很複雜,但是其他人呼叫它卻很簡單,不用具體知道它是如何做的,且一次能完成多個指令

oracle有系統儲存過程和自定義儲存過程2種儲存過程。

系統儲存過程就是由oracle預先提供的一組完成特定功能的儲存過程,安裝完oracle就有了。

自定義儲存過程就是存在oracle資料庫裡由一組plsql語句組成的自定義過程(procedure)。它可以供其它oracle自定義儲存過程、自定義函式和job呼叫或者由客戶端程式呼叫。

SQl中儲存過程有什麼作用

Microsoft SQL Server 中的儲存過程與其他程式語言中的過程類似,原因是儲存過程可以:

* 接受輸入引數並以輸出引數的格式向呼叫過程或批處理返回多個值。

* 包含用於在資料庫中執行操作(包括呼叫其他過程)的程式設計語句。

* 向呼叫過程或批處理返回狀態值,以指明成功或失敗(以及失敗的原因)。

可以使用 Transact-SQL EXECUTE 語句來執行儲存過程。儲存過程與函式不同,因為儲存過程不返回取代其名稱的值,也不能直接在表示式中使用。

在 SQL Server 中使用儲存過程而不使用儲存在客戶端計算機本地的 Transact-SQL 程式的好處包括:

* 儲存過程已在伺服器註冊。

* 儲存過程具有安全特性(例如許可權)和所有權連結,以及可以附加到它們的證書。

使用者可以被授予許可權來執行儲存過程而不必直接對儲存過程中引用的物件具有許可權。

* 儲存過程可以強制應用程式的安全性。

引數化儲存過程有助於保護應用程式不受 SQL Injection 攻擊。有關詳細資訊,請參閱 SQL Injection。

* 儲存過程允許模組化程式設計。

儲存過程一旦建立,以後即可在程式中呼叫任意多次。這可以改進應用程式的可維護性,並允許應用程式統一訪問資料庫。

* 儲存過程是命名程式碼,允許延遲繫結。

這提供了一個用於簡單程式碼演變的間接級別。

* 儲存過程可以減少網路通訊流量。

一個需要數百行 Transact-SQL 程式碼的操作可以通過一條執行過程程式碼的語句來執行,而不需要在網路中傳送數百行程式碼。

參照聯機

使用儲存過程有哪些優點?

1.在資料庫伺服器中只有首次對儲存過程中的命令進行編譯,以後直接呼叫無需編譯,加快執行速度。

2.只提供給使用者引數和結果,儲存過程對查詢過程封裝和加密,簡化使用者使用,防止非法修改。

3.儲存過程可以用於降低網路流量,儲存過程程式碼直接儲存於資料庫中,所以不會產生大量sql語句的程式碼流量。

4.可以只賦給使用者執行儲存過程的權利,而不給使用者操作相應資料表的權利,這樣可以有效防止注入攻擊。

5.維護性高,更新儲存過程通常比更改、測試以及重新部署程式集需定較少的時間和精力。

相關問題答案
cd52ba437424765122?