日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

存储过程概念

發布時間:2025/7/14 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 存储过程概念 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

專題:數據庫存儲過程的專題----http://tech.ccidnet.com/zt/guocheng/

?

?

存儲過程

sql語句執行的時候要先編譯,然后執行。存儲過程就是編譯好了的一些sql語句。應用程序需要用的時候直接調用就可以了,所以效率會高。

?

存儲過程介紹

?

存儲過程是由流控制和SQL語句書寫的過程,這個過程經編譯和優化后存儲在數據庫服務器中,應用程序使用時只要調用即可。在ORACLE中,若干個有聯系的過程可以組合在一起構成程序包。

?

使用存儲過程有以下的優點:

?

* 存儲過程的能力大大增強了SQL語言的功能和靈活性。存儲過程可以用流控制語句編寫,有很強的靈活性,可以完成復雜的判斷和較復雜的 運算。

?

* 可保證數據的安全性和完整性。

?

# 通過存儲過程可以使沒有權限的用戶在控制之下間接地存取數據庫,從而保證數據的安全。

?

# 通過存儲過程可以使相關的動作在一起發生,從而可以維護數據庫的完整性。

?

* 再運行存儲過程前,數據庫已對其進行了語法和句法分析,并給出了優化執行方案。這種已經編譯好的過程可極大地改善SQL語句的性能。 由于執行SQL語句的大部分工作已經完成,所以存儲過程能以極快的速度執行。

?

* 可以降低網絡的通信量。

?

* 使體現企業規則的運算程序放入數據庫服務器中,以便:

?

# 集中控制。

?

# 當企業規則發生變化時在服務器中改變存儲過程即可,無須修改任何應用程序。企業規則的特點是要經常變化,如果把體現企業規則的運算程序放入應用程序中,則 當企業規則發生變化時,就需要修改應用程序工作量非常之大(修改、發行和安裝應用程序)。如果把體現企業規則的 運算放入存儲過程中,則當企業規則發生變化時,只要修改存儲過程就可以了,應用程序無須任何變化。

?

數據庫存儲過程的實質就是部署在數據庫端的一組定義代碼以及SQL。

?

利用SQL的語言可以編寫對于數據庫訪問的存儲過程,其語法如下:

?

CREATE PROC[EDURE] procedure_name [;number] [ {@parameter data_type} ][VARYING] [= default] [OUTPUT] ] [,...n] [WITH  { RECOMPILE  | ENCRYPTION  | RECOMPILE, ENCRYPTION } ] [FOR REPLICATION] AS sql_statement [...n]

?

?

[ ]內的內容是可選項,而()內的內容是必選項,

例: 若用戶想建立一個刪除表tmp中的記錄的存儲過程Select_delete可寫為:

?

Create Proc select_del As  Delete tmp 

?

?

例:用戶想查詢tmp表中某年的數據的存儲過程

?

create proc select_query @year int as select * from tmp where year=@year

?

?

在這里@year是存儲過程的參數

例:該存儲過程是從某結點n開始找到最上層的父親結點,這種經常用到的過程可以由存儲過程來擔當,在網頁中重復使用達到共享。

空:表示該結點為頂層結點

fjdid(父結點編號) 

結點n 非空:表示該結點的父親結點號

dwmc(單位名稱)

?

CREATE proc search_dwmc @dwidold int,@dwmcresult varchar(100) output as  declare @stop int declare @result varchar(80) declare @dwmc varchar(80) declare @dwid int set nocount on set @stop=1 set @dwmc="" select @dwmc=dwmc,@dwid=convert(int,fjdid) from jtdw where id=@dwidold  set @result=rtrim(@dwmc) if @dwid=0  set @stop=0 while (@stop=1) and (@dwid<>0) begin set @dwidold=@dwid select @dwmc=dwmc,@dwid=convert(int,fjdid) from jtdw where id=@dwidold if @@rowcount=0  set @dwmc="" else set @result=@dwmc+@result if (@dwid=0) or (@@rowcount=0)  set @stop=0 else continue end set @dwmcresult=rtrim(@result) 使用exec pro-name [pram1 pram2.....]

?

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的存储过程概念的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。