自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL存儲(chǔ)過(guò)程的功能

數(shù)據(jù)庫(kù) SQL Server
SQL存儲(chǔ)過(guò)程對(duì)于SQL數(shù)據(jù)庫(kù)而言,有著不可替代的作用,它大大增強(qiáng)了SQL語(yǔ)言的功能和靈活性,同時(shí)保證數(shù)據(jù)的安全性和完整性。

SQL存儲(chǔ)過(guò)程使我們?cè)谑褂?a >SQL數(shù)據(jù)庫(kù)時(shí)經(jīng)??梢杂玫降?,下面就讓我們來(lái)一起了解一下SQL存儲(chǔ)過(guò)程都能帶來(lái)什么樣的好處。

SQL存儲(chǔ)過(guò)程(Stored Procedure)是一組為了完成特定功能的SQL語(yǔ)句集,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)中。用戶(hù)通過(guò)指定存儲(chǔ)過(guò)程的名字并給出參數(shù)(如果該存儲(chǔ)過(guò)程帶有參數(shù))來(lái)執(zhí)行它。存儲(chǔ)過(guò)程是數(shù)據(jù)庫(kù)中的一個(gè)重要對(duì)象,任何一個(gè)設(shè)計(jì)良好的數(shù)據(jù)庫(kù)應(yīng)用程序都應(yīng)該用到存儲(chǔ)過(guò)程。

* SQL存儲(chǔ)過(guò)程的能力大大增強(qiáng)了SQL語(yǔ)言的功能和靈活性。存儲(chǔ)過(guò)程可以用流控制語(yǔ)句編寫(xiě),有很強(qiáng)的靈活性,可以完成復(fù)雜的判斷和較復(fù)雜的 運(yùn)算。
* 可保證數(shù)據(jù)的安全性和完整性。
# 通過(guò)存儲(chǔ)過(guò)程可以使沒(méi)有權(quán)限的用戶(hù)在控制之下間接地存取數(shù)據(jù)庫(kù),從而保證數(shù)據(jù)的安全。
# 通過(guò)SQL存儲(chǔ)過(guò)程可以使相關(guān)的動(dòng)作在一起發(fā)生,從而可以維護(hù)數(shù)據(jù)庫(kù)的完整性。
* 在運(yùn)行存儲(chǔ)過(guò)程前,數(shù)據(jù)庫(kù)已對(duì)其進(jìn)行了語(yǔ)法和句法分析,并給出了優(yōu)化執(zhí)行方案。這種已經(jīng)編譯好的過(guò)程可極大地改善SQL語(yǔ)句的性能。由于執(zhí)行SQL語(yǔ)句的大部分工作已經(jīng)完成,所以存儲(chǔ)過(guò)程能以極快的速度執(zhí)行。
* 可以降低網(wǎng)絡(luò)的通信量。
* 使體現(xiàn)企業(yè)規(guī)則的運(yùn)算程序放入數(shù)據(jù)庫(kù)服務(wù)器中,以便:
# 集中控制。
# 當(dāng)企業(yè)規(guī)則發(fā)生變化時(shí)在服務(wù)器中改變存儲(chǔ)過(guò)程即可,無(wú)須修改任何應(yīng)用程序。企業(yè)規(guī)則的特點(diǎn)是要經(jīng)常變化,如果把體現(xiàn)企業(yè)規(guī)則的運(yùn)算程序放入應(yīng)用程序中,則當(dāng)企業(yè)規(guī)則發(fā)生變化時(shí),就需要修改應(yīng)用程序工作量非常之大(修改、發(fā)行和安裝應(yīng)用程序)。如果把體現(xiàn)企業(yè)規(guī)則的運(yùn)算放入存儲(chǔ)過(guò)程中,則當(dāng)企業(yè)規(guī)則發(fā)生變化時(shí),只要修改存儲(chǔ)過(guò)程就可以了,應(yīng)用程序無(wú)須任何變化。

  1. Create proc[edure] procedue_name  
  2. [@parameter data_type][output]  
  3. [with]{recompile|encryption}  
  4. as  
  5. sql_statement 

解釋?zhuān)?br /> output:表示此參數(shù)是可傳回的
with {recompile|encryption}
recompile:表示每次執(zhí)行此存儲(chǔ)過(guò)程時(shí)都重新編譯一次
encryption:所創(chuàng)建的存儲(chǔ)過(guò)程的內(nèi)容會(huì)被加密
如:
表book的內(nèi)容如下
編號(hào) 書(shū)名 價(jià)格
001 C語(yǔ)言入門(mén) $30
002 PowerBuilder報(bào)表開(kāi)發(fā) $52
實(shí)例1:查詢(xún)表Book的內(nèi)容的存儲(chǔ)過(guò)程

  1. create proc query_book  
  2. as  
  3. select * from book  
  4. go  
  5. exec query_book 

實(shí)例2:
加入一筆記錄到表book,并查詢(xún)此表中所有書(shū)籍的總金額

  1. Create proc insert_book  
  2. @param1 char(10),@param2 varchar(20),@param3 money,@param4 money output  
  3. with encryption ---------加密  
  4. as  
  5. insert book(編號(hào),書(shū)名,價(jià)格) Values(@param1,@param2,@param3)  
  6. select @param4=sum(價(jià)格) from book  
  7. go 

執(zhí)行例子:

  1. declare @total_price money  
  2. exec insert_book '003','Delphi 控件開(kāi)發(fā)指南',$100,@total_price  
  3. print '總金額為'+convert(varchar,@total_price)  
  4. go 

SQL存儲(chǔ)過(guò)程的3種傳回值:
1)、以Return傳回整數(shù)
2)、以output格式傳回參數(shù)
3)、Recordset

 

 

 

【編輯推薦】

oracle數(shù)據(jù)導(dǎo)入SQL數(shù)據(jù)庫(kù)的方法

SQL Server級(jí)聯(lián)更新的實(shí)現(xiàn)

SQL刪除所有表數(shù)據(jù)的實(shí)現(xiàn)方法

六種SQL Server刪除重復(fù)行的方法

Oracle查詢(xún)轉(zhuǎn)換為SQL查詢(xún)中列的選擇

 

責(zé)任編輯:段燃 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-07-15 12:38:14

SQL Server存

2011-03-24 13:38:47

SQL Server 存儲(chǔ)分頁(yè)

2010-09-25 16:00:38

sql存儲(chǔ)過(guò)程

2010-11-10 13:03:15

SQL Server存

2009-08-06 16:44:06

2010-09-07 15:12:25

SQL語(yǔ)句優(yōu)化

2010-11-12 09:58:34

SQL存儲(chǔ)過(guò)程

2010-09-10 14:09:23

2012-05-10 11:17:23

JavaSQL Server

2009-09-17 15:22:38

LINQ to SQL

2009-09-17 15:51:39

Linq to sql

2009-11-05 18:07:33

Oracle導(dǎo)出sql

2010-09-14 10:16:57

sql server

2010-11-12 09:46:55

Sql Server存

2010-11-12 12:01:08

Oracle存儲(chǔ)過(guò)程

2010-09-14 10:47:45

sql server存

2010-11-10 15:47:59

2011-03-31 10:38:28

SQL Server編寫(xiě)優(yōu)化

2010-09-07 16:46:56

SQL語(yǔ)句nsert

2010-09-14 10:36:23

sql server存
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)