青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Kisser Leon

這個kisser不太冷
posts - 100, comments - 102, trackbacks - 0, articles - 0

存儲過程 stored procedure

Posted on 2007-11-06 10:37 kk 閱讀(1353) 評論(0)  編輯 收藏 引用 所屬分類: IT
 

定義:
        將常用的或很復雜的工作,預先用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

--------------------------------------------------------------------------------------------------------------------

存儲過程介紹  

一、先介紹一下什么是存儲過程  
存儲過程是利用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   ōrdered=@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為輸出參數,用來承接我們所要的結果

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久热国产精品| 狠色狠色综合久久| 香蕉视频成人在线观看| 亚洲欧美日韩国产综合| 亚洲免费影院| 久久精品理论片| 老司机免费视频一区二区| 免费成人黄色片| 欧美日韩另类视频| 国产视频精品免费播放| 伊人蜜桃色噜噜激情综合| 亚洲九九九在线观看| 性欧美超级视频| 欧美~级网站不卡| 一区二区国产在线观看| 久久久av网站| 国产精品久久毛片a| 1024成人网色www| 亚洲免费人成在线视频观看| 久久精品理论片| 亚洲精品一区二区三区四区高清| 亚洲欧美在线免费| 欧美激情亚洲综合一区| 国产美女精品一区二区三区| 亚洲人成网在线播放| 香蕉久久夜色精品国产使用方法| 女人天堂亚洲aⅴ在线观看| 99精品视频免费| 麻豆freexxxx性91精品| 国产精品在线看| 亚洲精品视频在线观看免费| 久久国产精品久久w女人spa| 亚洲精品国产精品国自产在线 | 久久爱www.| 欧美裸体一区二区三区| 国产一在线精品一区在线观看| 一区二区三区不卡视频在线观看 | 99re国产精品| 久久gogo国模裸体人体| 亚洲人成网站在线播| 亚洲欧美韩国| 欧美激情麻豆| 久久精品欧美| 国产精品夜色7777狼人| 亚洲视频视频在线| 亚洲精品女人| 久久精品在这里| 国产一区二区三区高清播放| 亚洲男人的天堂在线观看| 91久久久一线二线三线品牌| 久久综合激情| 亚洲福利在线观看| 欧美a级大片| 另类成人小视频在线| 影音先锋中文字幕一区二区| 久久久噜噜噜久久狠狠50岁| 国内揄拍国内精品久久| 欧美jizz19hd性欧美| 亚洲国产成人在线| 亚洲欧美日韩一区二区三区在线观看 | 一区二区三区国产精品| 一区二区三区自拍| 亚洲日本欧美在线| 激情六月综合| 午夜精品视频在线观看| 亚洲免费观看高清在线观看| 久久久久九九九| 欧美freesex8一10精品| 欧美日韩第一区| 亚洲国产精品成人| 欧美成人精品在线视频| 免费永久网站黄欧美| 亚洲精选中文字幕| 亚洲网站在线看| 国内外成人免费激情在线视频| 久久久噜噜噜久久人人看| 开元免费观看欧美电视剧网站| 日韩视频精品在线| 亚洲欧美日韩在线| 在线观看视频欧美| 日韩小视频在线观看| 国产视频一区二区三区在线观看| 亚洲欧美视频一区| 欧美激情中文不卡| 亚洲精品乱码久久久久久久久| 亚洲午夜精品| 欧美在线播放视频| 99riav国产精品| 久久久久国产一区二区| 性18欧美另类| 国产精品日韩在线| 亚洲高清视频在线| 国产色爱av资源综合区| 亚洲小少妇裸体bbw| 亚洲综合成人婷婷小说| 欧美日韩亚洲精品内裤| 91久久国产综合久久| 亚洲七七久久综合桃花剧情介绍| 一道本一区二区| 亚洲精品黄色| 欧美日韩一区二区免费视频| 免费久久99精品国产自| 国产一区二区三区在线观看视频 | 欧美成人激情在线| 羞羞色国产精品| 亚洲激情亚洲| 国产精品成人一区二区三区夜夜夜 | 午夜激情一区| 先锋亚洲精品| 亚洲国产日日夜夜| 欧美日韩123| 欧美视频中文字幕在线| 欧美精品久久一区| 欧美日韩高清在线一区| 欧美国产1区2区| 久久青草欧美一区二区三区| 亚洲黄色尤物视频| 国内自拍视频一区二区三区| 狠狠v欧美v日韩v亚洲ⅴ| 国产丝袜一区二区三区| 亚洲天天影视| 午夜精品久久久久久久99热浪潮| 久久久久久久综合| 亚洲最新色图| 欧美日韩999| 黄色成人av网| 麻豆精品在线视频| 久久久久久久性| 国产精品99久久久久久久久久久久| 性欧美xxxx视频在线观看| 精品999在线观看| 国产精品v一区二区三区| 国产精品日韩| 性18欧美另类| 亚洲电影免费观看高清完整版在线 | 最新中文字幕一区二区三区| 亚洲精品系列| 亚洲国产老妈| 亚洲一区一卡| 欧美私人网站| 亚洲欧洲午夜| 久久视频免费观看| 一区二区三区四区在线| 久久精品在线视频| 亚洲午夜久久久久久久久电影院| 午夜精品久久久久久久久| 在线一区二区三区做爰视频网站 | 久久综合中文字幕| 亚洲男女自偷自拍| 亚洲午夜一区二区| 久久黄金**| 欧美成人午夜激情在线| 欧美劲爆第一页| 欧美18av| 国内精品久久久久久久97牛牛| 国内精品视频在线观看| 国产欧美日韩亚洲一区二区三区| 欧美区日韩区| 午夜精品久久久| 久久aⅴ国产紧身牛仔裤| 欧美一级午夜免费电影| 农村妇女精品| 亚洲伦伦在线| 欧美精品一区二区三区蜜臀| 一区二区三区久久| 亚洲欧美影院| 国产精品色午夜在线观看| 亚洲在线观看| 久久精品国产清高在天天线| 91久久极品少妇xxxxⅹ软件| 亚洲精品自在在线观看| 国产视频一区在线观看一区免费| 久久另类ts人妖一区二区| 美女视频黄免费的久久| 亚洲激情影视| 国产欧美一区二区三区国产幕精品 | 日韩视频免费| 欧美成人官网二区| 欧美综合第一页| 一区在线影院| 久久精品国产77777蜜臀| 亚洲综合精品自拍| 久久久久久尹人网香蕉| 欧美高清视频一区二区| 狠狠色狠狠色综合日日小说| 蜜桃久久精品乱码一区二区| 国产精品草莓在线免费观看| 欧美激情精品| 亚洲毛片一区| 欧美另类综合| 日韩天天综合| 亚洲欧美日韩一区二区| 欧美日韩国产小视频| 亚洲国内自拍| 欧美在线|欧美| 免费在线亚洲欧美| 亚洲理论在线| 国产精品成av人在线视午夜片| 99精品视频一区二区三区| 亚洲欧美在线另类|