當前位置:首頁 » 服務存儲 » 管理系統使用存儲過程
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

管理系統使用存儲過程

發布時間: 2023-01-03 02:10:20

sql存儲過程怎麼使用

一、簡單的儲存過程:

1、創建一個存儲過程

create procere GetUsers()

begin

select * from user;

end;12345

2、調用存儲過程

call GetUsers();12

3、刪除存儲過程

drop procere if exists GetUsers;

二、帶參數的存儲過程

1、MySql 支持 IN (傳遞給存儲過程) , OUT (從存儲過程傳出) 和 INOUT (對存儲過程傳入和傳出) 類型的參數 , 存儲過程的代碼位於 BEGIN 和 END 語句內 , 它們是一系列 SQL 語句 , 用來檢索值 , 然後保存到相應的變數 (通過指定INTO關鍵字) ;

2、下面的存儲過程接受三個參數 , 分別用於獲取用戶表的最小 , 平均 , 最大分數 , 每個參數必須具有指定的類型 , 這里使用十進制值(decimal(8,2)) , 關鍵字 OUT 指出相應的參數用來從存儲過程傳出

create procere GetScores(

out minScore decimal(8,2),

out avgScore decimal(8,2),

out maxScore decimal(8,2)

)

begin

select min(score) into minScore from user;

select avg(score) into avgScore from user;

select max(score) into maxScore from user;

end;1234567891011

3、調用此存儲過程 , 必須指定3個變數名(所有 MySql 變數都必須以@開始) , 如下所示 :

call GetScores(@minScore, @avgScore, @maxScore);12

4、該調用並沒有任何輸出 , 只是把調用的結果賦給了調用時傳入的變數@minScore, @avgScore, @maxScore, 然後即可調用顯示該變數的值 :

select @minScore, @avgScore, @maxScore;

5、使用 IN 參數 , 輸入一個用戶 id , 返回該用戶的名字 :

create procere GetNameByID(

in userID int,

out userName varchar(200)

)

begin

select name from user

where id = userID

into userName;

end;12345678910

6、調用存儲過程 :

call GetNameByID(1, @userName);

select @userName;123

⑵ sql 存儲過程 概念

在關系資料庫中,SQL語言是應用程序和資料庫管理系統之間的主要交流方法,使用SQL語言編寫代碼時,可以用兩種方法存儲和執行代碼。一種是在客戶端存儲代碼,並創建向資料庫管理系統發送SQL命令並處理返回結果的應用程序;第二種是將這些SQL語句存儲在資料庫管理系統中,這些存儲在資料庫管理系統中的Sql語句就是存儲過程,然後再創建執存儲過程並處理返回結果的應用程序。
例如:你想在很多表中取某些記錄,如果用SQL語言的話很長很復雜,你可以在資料庫里編寫一個存儲過程,這時你用VB,C語言編寫的應用程序代碼里就只要給出存儲過程的名稱就行了

⑶ SQL 賓館管理系統如何創建存儲過程

你這個說的太泛泛了。

存儲過程好創建,但你這個要的是;刪除表記錄?還是單純的統計出來入住的人數啊?

我這個是mysql 資料庫

CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`(IN `ClientID` int,IN `ClientName` varchar)
BEGIN
#Routine body goes here...
INSERT INTO Client VALUES(你要用的)
INSERT INTO ClientRecord VALUES(你要用的)
END;

你這個說的太泛泛了。

存儲過程好創建,但你這個要的是;刪除表記錄?還是單純的統計出來入住的人數啊?

我這個是mysql 資料庫

CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`(IN `i_ClientID` int,IN `v_ClientName` varchar)
BEGIN
DELETE Client WHERE ClientID = i_ClientID and ClientName = v_ClientName;
DELETE ClientRecord WHERE ClientID = i_ClientID and ClientName = v_ClientName;
END;

⑷ 存儲過程到底是什麼!

在大型資料庫系統中,存儲過程和觸發器具有很重要的作用。無論是存儲過程還是觸發器,都是sql 語句和流程式控制制語句的集合。就
本質而言,觸發器也是一種存儲過程。存儲過程在運算時生成執行方式,所以,以後對其再運行時其執行速度很快。sql server 2000 不僅提供了用戶自定義存儲過程的功能,而且也提供了許多可作為工具使用的系統存儲過程。

12.1.1 存儲過程的概念
存儲過程(stored procere)是一組為了完成特定功能的sql 語句集,經編譯後存儲在資料庫。中用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。

在sql server 的系列版本中存儲過程分為兩類:系統提供的存儲過程和用戶自定義存儲過程。系統過程主要存儲在master 資料庫中並以sp_為前綴,並且系統存儲過程主要是從系統表中獲取信息,從而為系統管理員管理sql server 提供支持。通過系統存儲過程,ms sql server 中的許多管理性或信息性的活動(如了解資料庫對象、資料庫信息)都可以被順利有效地完成。盡管這些系統存儲過程被放在master 資料庫中,但是仍可以在其它資料庫中對其進行調用,在調用時不必在存儲過程名前加上資料庫名。而且當創建一個新資料庫時,一些系統存儲過程會在新資料庫中被自動創建。用戶自定義存儲過程是由用戶創建並能完成某一特定功能(如查詢用戶所需數據信息)的存儲過程。在本章中所涉及到的存儲過程主要是指用戶自定義存儲過程。

12.1.2 存儲過程的優點
當利用ms sql server 創建一個應用程序時,transaction-sql 是一種主要的編程語言。若運用transaction-sql 來進行編程,有兩種方法。其一是,在本地存儲transaction- sql 程序,並創建應用程序向sql server 發送命令來對結果進行處理。其二是,可以把部分用transaction-sql 編寫的程序作為存儲過程存儲在sql server 中,並創建應用程序來調用存儲過程,對數據結果進行處理存儲過程能夠通過接收參數向調用者返回結果集,結果集的格式由調用者確定;返回狀態值給調用者,指明調用是成功或是失敗;包括針對資料庫的操作語句,並且可以在一個存儲過程中調用另一存儲過程。

我們通常更偏愛於使用第二種方法,即在sql server 中使用存儲過程而不是在客戶計算機上調用transaction-sql 編寫的一段程序,原因在於存儲過程具有以下優點:

(1) 存儲過程允許標准組件式編程
存儲過程在被創建以後可以在程序中被多次調用,而不必重新編寫該存儲過程的sql 語句。而且資料庫專業人員可隨時對存儲過程進行修改,但對應用程序源代碼毫無影響(因為應用程序源代碼只包含存儲過程的調用語句),從而極大地提高了程序的可移植性。

(2) 存儲過程能夠實現較快的執行速度
如果某一操作包含大量的transaction-sql 代碼或分別被多次執行,那麼存儲過程要比批處理的執行速度快很多。因為存儲過程是預編譯的,在首次運行一個存儲過程時,查詢優化器對其進行分析、優化,並給出最終被存在系統表中的執行計劃。而批處理的transaction- sql 語句在每次運行時都要進行編譯和優化,因此速度相對要慢一些。

(3) 存儲過程能夠減少網路流量
對於同一個針對數據資料庫對象的操作(如查詢、修改),如果這一操作所涉及到的 transaction-sql 語句被組織成一存儲過程,那麼當在客戶計算機上調用該存儲過程時,網路中傳送的只是該調用語句,否則將是多條sql 語句,從而大大增加了網路流量,降低網路負載。

(4) 存儲過程可被作為一種安全機制來充分利用
系統管理員通過對執行某一存儲過程的許可權進行限制,從而能夠實現對相應的數據訪問許可權的限制,避免非授權用戶對數據的訪問,保證數據的安全。(我們將在14 章「sqlserver 的用戶和安全性管理」中對存儲過程的這一應用作更為清晰的介紹)

注意:存儲過程雖然既有參數又有返回值,但是它與函數不同。存儲過程的返回值只是指明執行是否成功,並且它不能像函數那樣被直接調用,也就是在調用存儲過程時,在存儲過程名字前一定要有exec保留字(如何執行存儲過程見本章下一字)。

⑸ 有關oracle圖書管理系統新書入庫的存儲過程

按第二種情況寫
然後在里頭做 if else 判斷
如果存在圖書就只update庫存量
如果沒有就insert

⑹ 用SQL做圖書管理系統,怎樣視圖 存儲過程 觸發器

存儲過程就好象一個批處理文件一樣,你可以在裡面執行很多的SQL,來得到你最好需要的結果 ,或者說類似於一個函數,調用存儲過程後,T-SQL一次執行很多命令,最終給你個結果

視圖是虛擬表,比如要查詢的東西在兩個表裡,那麼可以把兩個表連接成一個視圖,這樣就可以查詢並顯示兩個表裡的內容了,具體還分左右外連接

觸發器是個特殊的存儲過程,它的執行不是人工操作的,而是由某事件的發生而引發的

你明白了吧
插紅旗 吼吼

⑺ 我用c#做一個管理系統!資料庫方面是用存儲過程好呢,還是用SQL查詢語句好呢兩者有什麼區別,要詳細過程

盡量用存儲過程好些,因為存儲過程比後台查詢更安全,畢竟是在SQL端執行,可以有效避免SQL注入的危險,而且效率也會高些.
區別么,直接SQL查詢的話需要執行的時候是需要提交SQL語句,查詢後返回進行邏輯操作.存儲過程直接請求資料庫,把敏感的邏輯寫在存儲過程中,安全,便捷,使後台代碼更整潔.
但是不是所有的東西都適合放存儲過程中,簡單的邏輯判斷什麼的就沒必要了

⑻ 我是C#做圖書管理系統,在做圖書庫存時,我在資料庫中建了一個存儲過程,我該怎麼用這個存儲過程

ADO.net 調用啊
前面的Sqlconnection我就不寫了
區別在
SqlCommand cmd=new SqlCommand("存儲過程名",conn);
cmd.CommandType=CommandType.StoredProcere;
cmd.Parameters.Add("存儲過程中的自定義變數名",要傳入存儲過程的變數名);
.......

⑼ 庫存管理系統的 應創建哪幾個存儲過程

嚴格說來,一套系統如果你的數據表設計好了,存儲過程將減少編制。往往存儲過程的出現,更多的原因是由於數據表設計不符合業務規則而造成需要進行若干次關聯。

你現在考慮的並不是什麼存儲過程的問題,你問的存儲過程應當創建哪幾個有如庫存管理系統中應當寫哪些代碼。

先去了解業務規則,然後再設計數據表,然後寫代碼的時候你就自然知道哪個需要存儲過程了