存儲過程詳解

什么是存儲過程: 存儲過程是由一些SQL語句組成的代碼塊,這些SQL語句像一個方法一樣實現(xiàn)一些功能(對單表或多表的增刪改查),然后再給這個代碼塊取一個名字稿静,在用到這個功能的時候調用他就行了梭冠。可以理解為經過封裝的SQL語句改备。

存儲過程的好處
1.由于數(shù)據(jù)庫執(zhí)行動作時控漠,是先編譯再執(zhí)行。然而存儲過程是一個編譯過的代碼塊悬钳,所以執(zhí)行效率要比普通SQL語句高盐捷。
2.一個存儲過程在網絡中交互時可以替代大量的SQL語句,降低網絡的通信量默勾,提高通信速率碉渡。
3.通過存儲過程能夠使沒有權限的用戶在控制之下間接地存取數(shù)據(jù)庫,從而確保數(shù)據(jù)安全母剥。

存儲過程的語法和參數(shù)詳解

一些基本語法

    --------------創(chuàng)建存儲過程-----------------

CREATE PROC [ EDURE ] procedure_name [ ; number ]
[ { @parameter data_type }
    [ VARYING ] [ = default ] [ OUTPUT ]
] [ ,...n ]

[ WITH
{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]

[ FOR REPLICATION ]

AS sql_statement [ ...n ]

--------------調用存儲過程-----------------

EXECUTE Procedure_name '' --存儲過程如果有參數(shù)滞诺,后面加參數(shù)格式為:@參數(shù)名    =value,也可直接為參數(shù)值value

--------------刪除存儲過程-----------------

  drop procedure procedure_name    --在存儲過程中能調用另外一個存儲過程环疼,而不能刪除另外一個存儲過程

創(chuàng)建存儲過程的參數(shù):
1.procedure_name :存儲過程的名稱习霹,在前面加#為局部臨時存儲過程,加##為全局臨時存儲過程秦爆。

2.; number:是可選的整數(shù)序愚,用來對同名的過程分組,以便用一條 DROP PROCEDURE 語句即可將同組的過程一起除去等限。例如爸吮,名為 orders 的應用程序使用的過程可以命名為 orderproc;1、orderproc;2 等望门。DROP PROCEDURE orderproc 語句將除去整個組形娇。如果名稱中包含定界標識符,則數(shù)字不應包含在標識符中筹误,只應在 procedure_name 前后使用適當?shù)亩ń绶?/p>

3.@parameter: 存儲過程的參數(shù)桐早。可以有一個或多個厨剪。用戶必須在執(zhí)行過程時提供每個所聲明參數(shù)的值(除非定義了該參數(shù)的默認值)哄酝。存儲過程最多可以有 2.100 個參數(shù)。
使用 @ 符號作為第一個字符來指定參數(shù)名稱祷膳。參數(shù)名稱必須符合標識符的規(guī)則陶衅。每個過程的參數(shù)僅用于該過程本身;相同的參數(shù)名稱可以用在其它過程中直晨。默認情況下搀军,參數(shù)只能代替常量膨俐,而不能用于代替表名、列名或其它數(shù)據(jù)庫對象的名稱罩句。有關更多信息焚刺,請參見 EXECUTE。

4.data_type:參數(shù)的數(shù)據(jù)類型门烂。所有數(shù)據(jù)類型(包括 text乳愉、ntext 和 image)均可以用作存儲過程的參數(shù)。不過诅福,cursor 數(shù)據(jù)類型只能用于 OUTPUT 參數(shù)匾委。如果指定的數(shù)據(jù)類型為 cursor,也必須同時指定 VARYING 和 OUTPUT 關鍵字氓润。有關 SQL Server 提供的數(shù)據(jù)類型及其語法的更多信息,請參見數(shù)據(jù)類型薯鳍。
說明 對于可以是 cursor 數(shù)據(jù)類型的輸出參數(shù)咖气,沒有最大數(shù)目的限制。

5.VARYING: 指定作為輸出參數(shù)支持的結果集(由存儲過程動態(tài)構造挖滤,內容可以變化)崩溪。僅適用于游標參數(shù)。

6.default: 參數(shù)的默認值斩松。如果定義了默認值伶唯,不必指定該參數(shù)的值即可執(zhí)行過程。默認值必須是常量或 NULL惧盹。如果過程將對該參數(shù)使用 LIKE 關鍵字乳幸,那么默認值中可以包含通配符(%、_钧椰、[] 和 [^])粹断。

7.OUTPUT :表明參數(shù)是返回參數(shù)。該選項的值可以返回給 EXEC[UTE]嫡霞。使用 OUTPUT 參數(shù)可將信息返回給調用過程瓶埋。Text昔头、ntext 和 image 參數(shù)可用作 OUTPUT 參數(shù)果正。使用 OUTPUT 關鍵字的輸出參數(shù)可以是游標占位符。

8.RECOMPILE: 表明 SQL Server 不會緩存該過程的計劃斩披,該過程將在運行時重新編譯端姚。在使用非典型值或臨時值而不希望覆蓋緩存在內存中的執(zhí)行計劃時晕粪,請使用 RECOMPILE 選項。

9.ENCRYPTION: 表示 SQL Server 加密 syscomments 表中包含 CREATE PROCEDURE 語句文本的條目寄锐。使用 ENCRYPTION 可防止將過程作為 SQL Server 復制的一部分發(fā)布兵多。 說明 在升級過程中尖啡,SQL Server 利用存儲在 syscomments 中的加密注釋來重新創(chuàng)建加密過程。

10.FOR REPLICATION :指定不能在訂閱服務器上執(zhí)行為復制創(chuàng)建的存儲過程剩膘。.使用 FOR REPLICATION 選項創(chuàng)建的存儲過程可用作存儲過程篩選衅斩,且只能在復制過程中執(zhí)行。本選項不能和 WITH RECOMPILE 選項一起使用怠褐。

11.AS :指定過程要執(zhí)行的操作畏梆。

12.sql_statement :過程中要包含的任意數(shù)目和類型的 Transact-SQL 語句。但有一些限制奈懒。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末奠涌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子磷杏,更是在濱河造成了極大的恐慌溜畅,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件极祸,死亡現(xiàn)場離奇詭異慈格,居然都是意外死亡,警方通過查閱死者的電腦和手機遥金,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門浴捆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人稿械,你說我怎么就攤上這事选泻。” “怎么了美莫?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵页眯,是天一觀的道長。 經常有香客問我茂嗓,道長餐茵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任述吸,我火速辦了婚禮忿族,結果婚禮上,老公的妹妹穿的比我還像新娘蝌矛。我一直安慰自己道批,他們只是感情好,可當我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布入撒。 她就那樣靜靜地躺著隆豹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪茅逮。 梳的紋絲不亂的頭發(fā)上璃赡,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天判哥,我揣著相機與錄音,去河邊找鬼碉考。 笑死塌计,一個胖子當著我的面吹牛,可吹牛的內容都是我干的侯谁。 我是一名探鬼主播锌仅,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼墙贱!你這毒婦竟也來了热芹?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤惨撇,失蹤者是張志新(化名)和其女友劉穎伊脓,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體串纺,經...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡丽旅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了纺棺。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡邪狞,死狀恐怖祷蝌,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情帆卓,我是刑警寧澤巨朦,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站剑令,受9級特大地震影響糊啡,放射性物質發(fā)生泄漏。R本人自食惡果不足惜吁津,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一棚蓄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧碍脏,春花似錦梭依、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至钾埂,卻和暖如春河闰,著一層夾襖步出監(jiān)牢的瞬間科平,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工姜性, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瞪慧,地道東北人。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓污抬,卻偏偏與公主長得像汞贸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子印机,可洞房花燭夜當晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內容

  • 轉載自這里 存儲過程簡介 我們常用的操作數(shù)據(jù)庫語言SQL語句在執(zhí)行的時候需要要先編譯矢腻,然后執(zhí)行,而存儲過程(Sto...
    杜七閱讀 2,403評論 4 27
  • 原文鏈接 MySQL存儲過程詳解 1.存儲過程簡介 我們常用的操作數(shù)據(jù)庫語言SQL語句在執(zhí)行的時候需要要先編譯射赛,然...
    亞斯咪妮閱讀 2,673評論 1 30
  • oracle存儲過程常用技巧 我們在進行pl/sql編程時打交道最多的就是存儲過程了多柑。存儲過程的結構是非常的簡單的...
    dertch閱讀 3,498評論 1 12
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)楣责,斷路器竣灌,智...
    卡卡羅2017閱讀 134,695評論 18 139
  • 《流氓》 我是一個流氓 馳騁江湖 形骸放浪 我是一個流氓 坐看雨霽風霜 緣盡斷腸 我是一個流氓 爛骨比 那癡石頭 ...
    AskaChan閱讀 335評論 0 2