<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 78,  comments - 48,  trackbacks - 0

    什么是存儲過程呢?

    定義:

    ????? 將常用的或很復雜的工作,預先用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 procedure procedue_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:設有兩個表為Product,Order,其表內容如下:
    ????? Product
    ?????????? 產品編號?????? 產品名稱??? 客戶訂數????
    ??????????? 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 Product a inner join Order b on a.產品編號=b.產品編號
    ??? if? @@error=0
    ?????? print 'Good'
    ??? else
    ?????? print 'Fail'
    ???? go

    posted on 2006-08-16 11:53 黑咖啡 閱讀(232) 評論(0)  編輯  收藏 所屬分類: Tec Article

    <2006年8月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    留言簿(2)

    隨筆分類(67)

    文章分類(43)

    Good Article

    Good Blogs

    Open Source

    最新隨筆

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 伊人久久免费视频| 亚洲无删减国产精品一区| 曰曰鲁夜夜免费播放视频| 又硬又粗又长又爽免费看 | 国产免费AV片在线观看播放| 中文字幕亚洲男人的天堂网络| 久久精品亚洲综合专区| 亚洲AV成人精品日韩一区18p| 四虎免费大片aⅴ入口| h视频在线观看免费网站| 久久成人免费电影| 中国一级毛片视频免费看| 特级毛片在线大全免费播放| 亚洲av无码专区国产不乱码| 精品亚洲国产成人| 亚洲国产成人精品无码区在线秒播 | 免费在线视频你懂的| 久久久国产精品无码免费专区| 一级做a爱过程免费视| 国产成人高清亚洲一区久久| 一本色道久久88亚洲精品综合 | 国产麻豆一精品一AV一免费 | 亚洲成av人影院| 国产亚洲综合精品一区二区三区| 亚洲jjzzjjzz在线观看| 亚洲精品欧洲精品| 亚洲福利一区二区精品秒拍| 久久久久亚洲精品日久生情| 亚洲va中文字幕无码久久| 亚洲不卡中文字幕无码| 国产亚洲精品精华液| 久久久久国产成人精品亚洲午夜| 亚洲女人被黑人巨大进入| 亚洲中久无码不卡永久在线观看| 亚洲人成电影在线播放| 亚洲一级Av无码毛片久久精品| 亚洲精品国产精品国自产观看 | 国产亚洲综合久久| 免费人成再在线观看网站| 成人免费网站久久久| 成人毛片100免费观看|