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

存儲程序

發布時間: 2022-01-15 18:33:22

『壹』 簡述存儲程序原理

簡:將程序像數據一樣存儲到計算機內部存儲器中的一種設計原理。程序存入存儲器後,計算機便可自動地從一條指令轉到執行另一條指令。

步驟:
首先:把程序和數據通過輸入輸出設備送入內存。
一般的內存都是劃分為很多存儲單元,每個存儲單元都有地址編號,這樣按一定順序把程序和數據村起來,而且還把內存分為若干個區域,比如有專門存放程序區和專門存放數據的數據區。
其次:執行程序,必須從第一條指令開始,以後一條一條地執行。

其中,每執行一條指令,都要經過三個步驟:第一步,把指令從內存中送往解碼器,稱為取指;第二步,解碼器把指令分解成操作碼和操作數,產生相應的各種控制信號送往各電器部件;第三步,執行相應的操作。這一過程是由電子路線來控制,從而實現自動連續的工作。

『貳』 什麼是存儲過程

定義:
將常用的或很復雜的工作,預先用sql語句寫好並用一個指定的名稱存儲起來, 那麼以後要叫資料庫提供與已定義好的存儲過程的功能相同的服務時,只需調用execute,即可自動完成命令。
講到這里,可能有人要問:這么說存儲過程就是一堆SQL語句而已啊?
Microsoft公司為什麼還要添加這個技術呢?
那麼存儲過程與一般的SQL語句有什麼區別呢?
存儲過程的優點:
1.存儲過程只在創造時進行編譯,以後每次執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高資料庫執行速度。
2.當對資料庫進行復雜操作時(如對多個表進行Update,Insert,Query,Delete時),可將此復雜操作用存儲過程封裝起來與資料庫提供的事務處理結合一起使用。
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:所創建的存儲過程的內容會被加密
如:
表book的內容如下
編號 書名 價格
001 C語言入門 $30
002 PowerBuilder報表開發 $52
實例1:查詢表Book的內容的存儲過程
create proc query_book
as
select * from book
go
exec query_book
實例2:加入一筆記錄到表book,並查詢此表中所有書籍的總金額
Create proc insert_book
@param1 char(10),@param2 varchar(20),@param3 money,@param4 money output
with encryption ---------加密
as
insert book(編號,書名,價格) Values(@param1,@param2,@param3)
select @param4=sum(價格) from book
go
執行例子:
declare @total_price money
exec insert_book '003','Delphi 控制項開發指南',$100,@total_price
print '總金額為'+convert(varchar,@total_price)
go
存儲過程的3種傳回值:
1.以Return傳回整數
2.以output格式傳回參數
3.Recordset
傳回值的區別:
output和return都可在批次程式中用變數接收,而recordset則傳回到執行批次的客戶端中
實例3:設有兩個表為Proct,Order,其表內容如下:
Proct
產品編號 產品名稱 客戶訂數
001 鋼筆 30
002 毛筆 50
003 鉛筆 100
Order
產品編號 客戶名 客戶訂金
001 南山區 $30
002 羅湖區 $50
003 寶安區 $4
請實現按編號為連接條件,將兩個表連接成一個臨時表,該表只含編號.產品名.客戶名.訂金.總金額,
總金額=訂金*訂數,臨時表放在存儲過程中
代碼如下:
Create proc temp_sale
as
select a.產品編號,a.產品名稱,b.客戶名,b.客戶訂金,a.客戶訂數* b.客戶訂金 as總金額
into #temptable from Proct a inner join Order b on a.產品編號=b.產品編號
if @@error=0
print 'Good'
else
&n bsp; print 'Fail'
go

存儲過程介紹
一、先介紹一下什麼是存儲過程
存儲過程是利用SQL Server所提供的Tranact-SQL語言所編寫的程序。Tranact-SQL語言是SQL Server提供專為設計資料庫應用程序的語言,它是應用程序和SQL Server資料庫間的主要程序式設計界面。它好比Oracle資料庫系統中的Pro-SQL和Informix的資料庫系統能夠中的Informix-4GL語言一樣。這類語言主要提供以下功能,讓用戶可以設計出符合引用需求的程序:
1)、變數說明
2)、ANSI兼容的SQL命令(如Select,Update….)
3)、一般流程式控制制命令(if…else…、while….)
4)、內部函數

二、存儲過程的書寫格

CREATE PROCEDURE [擁有者.]存儲過程名[;程序編號]
[(參數#1,…參數#1024)]
[WITH
{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}
]
[FOR REPLICATION]
AS 程序行

其中存儲過程名不能超過128個字。每個存儲過程中最多設定1024個參數
(SQL Server 7.0以上版本),參數的使用方法如下:

@參數名 數據類型 [VARYING] [=內定值] [OUTPUT]

每個參數名前要有一個「@」符號,每一個存儲過程的參數僅為該程序內部使用,參數的類型除了IMAGE外,其他SQL Server所支持的數據類型都可使用。
[=內定值]相當於我們在建立資料庫時設定一個欄位的默認值,這里是為這個參數設定默認值。[OUTPUT]是用來指定該參數是既有輸入又有輸出值的,也就是在調用了這個存儲過程時,如果所指定的參數值是我們需要輸入的參數,同時也需要在結果中輸出的,則該項必須為OUTPUT,而如果只是做輸出參數用,可以用CURSOR,同時在使用該參數時,必須指定VARYING和OUTPUT這兩個語句。

例子:
CREATE PROCEDURE order_tot_amt @o_id int,@p_tot int output AS
SELECT @p_tot = sum(Unitprice*Quantity)
FROM orderdetails
WHERE ordered=@o_id

例子說明:
該例子是建立一個簡單的存儲過程order_tot_amt,這個存儲過程根據用戶輸入的定單ID號碼(@o_id),由定單明細表(orderdetails)中計算該定單銷售總額[單價(Unitprice)*數量(Quantity)],這一金額通過@p_tot這一參數輸出給調用這一存儲過程的程序

三、在SQL Server中執行存儲過程

在SQL Server的查詢分析器中,輸入以下代碼:
declare @tot_amt int
execute order_tot_amt 1,@tot_amt output
select @tot_amt

以上代碼是執行order_tot_amt這一存儲過程,以計算出定單編號為1的定單銷售金額,我們定義@tot_amt為輸出參數,用來承接我們所要的結果

sql語句執行的時候要先編譯,然後執行。存儲過程就是編譯好了的一些sql語句。用的時候直接就可以用了。

存儲過程是由流控制和SQL語句書寫的過程,這個過程經編譯和優化 後存儲在資料庫伺服器中,使用時只要調用即可。在ORACLE中,若干個 有聯系的過程可以組合在一起構成程序包。
使用存儲過程有以下的優點:
* 存儲過程的能力大大增強了SQL語言的功能和靈活性。存儲過程可 以用流控制語句編寫,有很強的靈活性,可以完成復雜的判斷和較復雜的 運算。
* 可保證數據的安全性和完整性。
# 通過存儲過程可以使沒有許可權的用戶在控制之下間接地存取資料庫,從而保證數據的安全。
# 通過存儲過程可以使相關的動作在一起發生,從而可以維護資料庫的完整性。
* 再運行存儲過程前,資料庫已對其進行了語法和句法分析,並給出 了優化執行方案。這種已經編譯好的過程可極大地改善SQL語句的性能。 由於執行SQL語句的大部分工作已經完成,所以存儲過程能以極快的速度執 行。
* 可以降低網路的通信量。
* 使體現企業規則的運算程序放入資料庫伺服器中,以便:
# 集中控制。
# 當企業規則發生變化時在伺服器中改變存儲過程即可,無須修改 任何應用程序。企業規則的特點是要經常變化,如果把體現企業規則的運 算程序放入應用程序中,則當企業規則發生變化時,就需要修改應用程序 工作量非常之大(修改、發行和安裝應用程序)。如果把體現企業規則的 運算放入存儲過程中,則當企業規則發生變化時,只要修改存儲過程就可 以了,應用程序無須任何變化。

『叄』 解釋馮諾依曼所提出的「存儲程序」的概念

存儲過程,又稱存儲程序(英語:Stored Procere),是在資料庫存儲復雜程序,以便外部程序調用的資料庫對象,可以視為資料庫的一種函數或子程序。

存儲程序和程序控制原理的要點是,程序輸入到計算機中,存儲在內存儲器中(存儲原理),在運行時,控制器按地址順序取出存放在內存儲器中的指令(按地址順序訪問指令),然後分析指令,執行指令的功能,遇到轉移指令時,則轉移到轉移地址,再按地址順序訪問指令(程序控制)。

(3)存儲程序擴展閱讀

存儲程序的優缺點

1、存儲過程可封裝,並隱藏復雜的商業邏輯。

2、存儲過程可以回傳值,並可以接受參數。

3、存儲過程無法使用 SELECT 指令運行,因為它是子程序,與查看錶、數據表或用戶定義函數不同。

4、存儲過程可以用在數據檢驗,強制實行商業邏輯等。

缺點

1、存儲過程,往往定製於特定的資料庫上,因為支持的編程語言不同。當切換到其他廠商的資料庫系統時,需要重寫原有的存儲過程。

2、存儲過程的性能調校與撰寫,受限於各種資料庫系統。

『肆』 存儲程序的作用 及優缺點

優點:1:插入
刪除
不需移動其他元素,
只需改變指針.
2:鏈表各個節點在內存中空間不要求連續!空間利用率高
缺點:1:訪問數組元素效率低,例如:訪問第100個元素,必須從頭節一直
next
99次
才能訪問到
2:數組的存儲空間連續,內存空間利用率低

『伍』 存儲程序的工作方式

存儲程序方式利用電子計算機技術,以預先編好的程序來控制交換接續動作的控制方式、其控制部分是一種專用電子計算機,主要由存儲器、中央控制器、輸入/輸出設備和交換控製程序等組成。

『陸』 什麼是存儲程序

就是像現在的電腦那樣,把軟體存在硬碟裡面,需要運行時就調入內存啊.存儲程序最先是由馮諾依曼提出來的

『柒』 存儲程序的原理

存儲程序原理又稱「馮·諾依曼原理」(1946年提出)。將程序像數據一樣存儲到計算機內部存儲器中的一種設計原理。程序存入存儲器後,計算機便可自動地從一條指令轉到執行另一條指令。現電子計算機均按此原理設計。

『捌』 存儲程序的控制原理是什麼

馮·諾伊曼原理
電子計算機採用了「存貯程序控制」原理。這一原理是1946年由美籍匈牙利數學家馮·諾伊曼提出的,所以又稱為「馮·諾伊曼原理」。這一原理在計算機的發展過程中,始終發揮著重要影響,確立了現代計算機的基本組成和工作方式,直到現在,各類計算機的工作原理還是採用馮·諾伊曼原理思想。馮·諾伊曼原理的核心是「存貯程序控制」。
第一步:將程序和數據通過輸入設備送入存儲器;
第二步:啟動運行後,計算機從存儲器中取出程序指令送到控制器去識別,分析該指 令要求什麼事;
第三步:控制器根據指令的含義發出相應的命令(如加法、減法),將存儲單元中存放的操作數據取出送往運算器進行運算,再把運算結果送回存儲器指定的單元中;
第四步:當運算任務完成後,就可以根據指令將結果通過輸出設備輸出
「存貯程序控制」原理的基本內容是:
(1) 採用二進制形式表示數據和指令;
(2) 將程序(數據和指令序列)預先存放在主存貯器中,使計算機在工作時能夠自動高速地從存貯器中取出指令,並加以執行;
(3) 由運算器 、存貯器、控制器、輸入設備、輸出設備五大基本部件組成計算機系統,並規定了這五大部件的基本功能。馮·諾伊曼思想實際上是電子計算機設計的基本思想,奠定了現代電子計算機的基本結構,開創了程序設計的時代。

『玖』 「存儲程序」工作原理

先是 轉存
然後 在是讀取
最後在存儲

基本上是這個過程
不是很詳細