婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > sql存儲過程的使用和介紹

sql存儲過程的使用和介紹

熱門標簽:承德地圖標注公司名需要花錢嗎 北京400電話辦理多少錢 電銷外呼系統軟件功能 榕城市地圖標注 慶陽地圖標注 咸陽電腦外呼系統運營商 怎么給高德做地圖標注 美團地圖標注商戶認證注冊 浙江穩定外呼系統供應商

sql server存儲過程語法

    定義總是很抽象。存儲過程其實就是能完成一定操作的一組SQL語句,只不過這組語句是放在數據庫中的(這里我們只談SQL Server)。如果我們通過創建存儲過程以及在ASP中調用存儲過程,就可以避免將SQL語句同ASP代碼混雜在一起。這樣做的好處至少有三個:
    第一、大大提高效率。存儲過程本身的執行速度非常快,而且,調用存儲過程可以大大減少同數據庫的交互次數。
    第二、提高安全性。假如將SQL語句混合在ASP代碼中,一旦代碼失密,同時也就意味著庫結構失密。
    第三、有利于SQL語句的重用。

    在ASP中,一般通過command對象調用存儲過程,根據不同情況,本文也介紹其它調用方法。為了方便說明,根據存儲過程的輸入輸出,作以下簡單分類:
    1. 只返回單一記錄集的存儲過程
    假設有以下存儲過程(本文的目的不在于講述T-SQL語法,所以存儲過程只給出代碼,不作說明):

復制代碼 代碼如下:

    /*SP1*/
    CREATE PROCEDURE dbo.getUserList
    as
    set nocount on
    begin
       select * from dbo.[userinfo]
    end
    go

    以上存儲過程取得userinfo表中的所有記錄,返回一個記錄集。通過command對象調用該存儲過程的ASP代碼如下:

    '**通過Command對象調用存儲過程**
復制代碼 代碼如下:

    DIM MyComm,MyRst
    Set MyComm = Server.CreateObject("ADODB.Command")
    MyComm.ActiveConnection = MyConStr          'MyConStr是數據庫連接字串
    MyComm.CommandText      = "getUserList"     '指定存儲過程名
    MyComm.CommandType      = 4                 '表明這是一個存儲過程
    MyComm.Prepared         = true              '要求將SQL命令先行編譯
    Set MyRst = MyComm.Execute
    Set MyComm = Nothing

    存儲過程取得的記錄集賦給MyRst,接下來,可以對MyRst進行操作。
    在以上代碼中,CommandType屬性表明請求的類型,取值及說明如下:
      -1   表明CommandText參數的類型無法確定

     1    表明CommandText是一般的命令類型
      2    表明CommandText參數是一個存在的表名稱
      4    表明CommandText參數是一個存儲過程的名稱

    還可以通過Connection對象或Recordset對象調用存儲過程,方法分別如下:

    '**通過Connection對象調用存儲過程**

復制代碼 代碼如下:

    DIM MyConn,MyRst
    Set MyConn = Server.CreateObject("ADODB.Connection")
    MyConn.open MyConStr                            'MyConStr是數據庫連接字串
    Set MyRst  = MyConn.Execute("getUserList",0,4)  '最后一個參斷含義同CommandType
    Set MyConn = Nothing

    '**通過Recordset對象調用存儲過程**
    DIM MyRst
    Set MyRst = Server.CreateObject("ADODB.Recordset")
    MyRst.open "getUserList",MyConStr,0,1,4
    'MyConStr是數據庫連接字串,最后一個參斷含義與CommandType相同



    2. 沒有輸入輸出的存儲過程
    請看以下存儲過程:
復制代碼 代碼如下:

    /*SP2*/
    CREATE PROCEDURE dbo.delUserAll
    as
    set nocount on
    begin
       delete from dbo.[userinfo]
    end
    go

    該存儲過程刪去userinfo表中的所有記錄,沒有任何輸入及輸出,調用方法與上面講過的基本相同,只是不用取得記錄集:

    '**通過Command對象調用存儲過程**

復制代碼 代碼如下:

    DIM MyComm
    Set MyComm = Server.CreateObject("ADODB.Command")
    MyComm.ActiveConnection = MyConStr          'MyConStr是數據庫連接字串
    MyComm.CommandText      = "delUserAll"      '指定存儲過程名
    MyComm.CommandType      = 4                 '表明這是一個存儲過程
    MyComm.Prepared         = true              '要求將SQL命令先行編譯
    MyComm.Execute                              '此處不必再取得記錄集

    Set MyComm = Nothing


    當然也可通過Connection對象或Recordset對象調用此類存儲過程,不過建立Recordset對象是為了取得記錄集,在沒有返回記錄集的情況下,還是利用Command對象吧。


    3. 有返回值的存儲過程
    在進行類似SP2的操作時,應充分利用SQL Server強大的事務處理功能,以維護數據的一致性。并且,我們可能需要存儲過程返回執行情況,為此,將SP2修改如下:

復制代碼 代碼如下:

    /*SP3*/
    CREATE PROCEDURE dbo.delUserAll
    as
    set nocount on
    begin
       BEGIN TRANSACTION
       delete from dbo.[userinfo]
       IF @@error=0
          begin
             COMMIT TRANSACTION
             return 1
          end
       ELSE
          begin
             ROLLBACK TRANSACTION
             return 0
          end       
       return
    end
    go

    以上存儲過程,在delete順利執行時,返回1,否則返回0,并進行回滾操作。為了在ASP中取得返回值,需要利用Parameters集合來聲明參數:
復制代碼 代碼如下:

    '**調用帶有返回值的存儲過程并取得返回值**
    DIM MyComm,MyPara
    Set MyComm = Server.CreateObject("ADODB.Command")
    MyComm.ActiveConnection = MyConStr          'MyConStr是數據庫連接字串
    MyComm.CommandText      = "delUserAll"      '指定存儲過程名
    MyComm.CommandType      = 4                 '表明這是一個存儲過程
    MyComm.Prepared         = true              '要求將SQL命令先行編譯
    '聲明返回值
    Set Mypara = MyComm.CreateParameter("RETURN",2,4)

    MyComm.Parameters.Append MyPara
    MyComm.Execute
    '取得返回值
    DIM retValue
    retValue = MyComm(0)    '或retValue = MyComm.Parameters(0)
    Set MyComm = Nothing

  
    在MyComm.CreateParameter("RETURN",2,4)中,各參數的含義如下:
    第一個參數("RETURE")為參數名。參數名可以任意設定,但一般應與存儲過程中聲明的參數名相同。此處是返回值,我習慣上設為"RETURE";
    第二個參數(2),表明該參數的數據類型,具體的類型代碼請參閱ADO參考,以下給出常用的類型代碼:
    adBigInt: 20 ;
    adBinary : 128 ;
    adBoolean: 11 ;
    adChar: 129 ;
    adDBTimeStamp: 135 ;
    adEmpty: 0 ;
    adInteger: 3 ;
    adSmallInt: 2 ;
    adTinyInt: 16 ;
    adVarChar: 200 ;
    對于返回值,只能取整形,且-1到-99為保留值;
    第三個參數(4),表明參數的性質,此處4表明這是一個返回值。此參數取值的說明如下:
    0 : 類型無法確定; 1: 輸入參數;2: 輸入參數;3:輸入或輸出參數;4: 返回值

    以上給出的ASP代碼,應該說是完整的代碼,也即最復雜的代碼,其實
復制代碼 代碼如下:

    Set Mypara = MyComm.CreateParameter("RETURN",2,4)
    MyComm.Parameters.Append MyPara
 
     
    可以簡化為
復制代碼 代碼如下:

    MyComm.Parameters.Append MyComm.CreateParameter("RETURN",2,4)

    甚至還可以繼續簡化,稍后會做說明。
    對于帶參數的存儲過程,只能使用Command對象調用(也有資料說可通過Connection對象或Recordset對象調用,但我沒有試成過)。


    4. 有輸入參數和輸出參數的存儲過程
    返回值其實是一種特殊的輸出參數。在大多數情況下,我們用到的是同時有輸入及輸出參數的存儲過程,比如我們想取得用戶信息表中,某ID用戶的用戶名,這時候,有一個輸入參數----用戶ID,和一個輸出參數----用戶名。實現這一功能的存儲過程如下:

復制代碼 代碼如下:

    /*SP4*/
    CREATE PROCEDURE dbo.getUserName
       @UserID int,
       @UserName varchar(40) output
    as
    set nocount on
    begin
       if @UserID is null return
       select @UserName=username
           from dbo.[userinfo]

04017PIXTEL_MMI_EBOOK_2005>17                                                          /PIXTEL_MMI_EBOOK_2005>

標簽:重慶 呼和浩特 新鄉 上海 拉薩 江蘇 昭通 貴州

巨人網絡通訊聲明:本文標題《sql存儲過程的使用和介紹》,本文關鍵詞  sql,存儲,過程,的,使用,和,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《sql存儲過程的使用和介紹》相關的同類信息!
  • 本頁收集關于sql存儲過程的使用和介紹的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲一区二区三区四区五区黄| 亚洲天堂av老司机| 精品国产一区二区三区久久影院 | 日韩亚洲电影在线| 亚洲女人****多毛耸耸8| 91网站最新地址| 欧美日韩中文一区| 亚洲欧洲av在线| 欧美日韩一区二区三区高清| 久久精品999| 欧美国产97人人爽人人喊| 99久久国产免费看| 午夜视频在线观看一区| 日韩一卡二卡三卡国产欧美| 国产真实精品久久二三区| 中国av一区二区三区| 在线观看欧美精品| 美国精品在线观看| 中文字幕国产精品一区二区| 色噜噜狠狠成人中文综合| 性做久久久久久| 国产精品免费丝袜| 欧美日韩电影一区| 国产91精品一区二区麻豆网站 | 色综合天天综合色综合av| 777色狠狠一区二区三区| 久久精品99国产精品| 日韩理论片一区二区| 日韩美一区二区三区| 91视频你懂的| 国产精品一区二区三区乱码| 亚洲va欧美va人人爽午夜| 国产精品久久二区二区| 欧美一二三区在线| 色综合咪咪久久| 国产激情一区二区三区| 婷婷丁香久久五月婷婷| 国产精品免费人成网站| 精品久久五月天| 日韩午夜在线影院| 欧美日韩一区二区三区在线看| 正在播放亚洲一区| 99精品久久免费看蜜臀剧情介绍| 2017欧美狠狠色| 欧美日产在线观看| 欧美色偷偷大香| 色综合久久久久久久久| 成人激情校园春色| 国产成人精品一区二区三区网站观看| 日韩欧美亚洲另类制服综合在线| 三级久久三级久久| 亚洲精品久久久蜜桃| 亚洲精品一卡二卡| 亚洲九九爱视频| 亚洲日韩欧美一区二区在线| 欧美国产日韩精品免费观看| 国产日本欧美一区二区| 久久先锋影音av| 久久久久久99精品| 国产调教视频一区| 久久色视频免费观看| 久久这里都是精品| 中文字幕av免费专区久久| 久久精品亚洲乱码伦伦中文| 大白屁股一区二区视频| 九九久久精品视频| 国产精品久久一卡二卡| 国产亚洲精品超碰| 国产日韩精品久久久| 中文字幕免费不卡| 综合色天天鬼久久鬼色| 亚洲综合无码一区二区| 丝袜脚交一区二区| 精品综合久久久久久8888| 久久99热国产| 成人污视频在线观看| 肉色丝袜一区二区| 蜜乳av一区二区三区| 国产精品 欧美精品| av中文字幕亚洲| 欧洲亚洲国产日韩| 精品久久久久久无| 在线免费观看一区| 欧美久久久久久久久中文字幕| 国产一二精品视频| 亚洲精品国产一区二区精华液| 欧美军同video69gay| 51精品国自产在线| 在线视频中文字幕一区二区| 欧美日韩国产乱码电影| 久久综合九色综合欧美就去吻| 色美美综合视频| 国产在线精品一区二区不卡了| 一区二区三区免费看视频| 欧美成人aa大片| 色综合欧美在线| 91麻豆精品国产91久久久 | 视频一区二区三区入口| 久久国内精品视频| 一本一道久久a久久精品| 亚洲资源在线观看| 麻豆成人久久精品二区三区红 | 午夜久久久久久久久| 久久精品免费观看| 色婷婷综合久久| 久久亚洲一级片| 欧美成人免费网站| 亚洲欧洲国产日韩| 中文字幕欧美激情一区| 精品国产乱码久久久久久浪潮| 欧美在线不卡一区| 国产女主播视频一区二区| 久久久天堂av| 精品日韩欧美在线| 欧美日韩国产综合视频在线观看| 99re在线视频这里只有精品| 日韩视频一区在线观看| 精品国产一区二区精华 | 玖玖九九国产精品| 欧美午夜片在线看| 亚洲色图一区二区三区| 亚洲视频在线观看一区| 麻豆国产欧美日韩综合精品二区| 日本在线不卡一区| 一本到不卡免费一区二区| 欧美韩日一区二区三区| 精品一区二区av| 欧美大尺度电影在线| 午夜精品久久久久久久蜜桃app| 日韩av在线播放中文字幕| 91免费国产在线观看| 亚洲婷婷综合久久一本伊一区| 亚洲精品一卡二卡| 99热在这里有精品免费| 欧美韩国日本综合| 99久久久免费精品国产一区二区| 色呦呦一区二区三区| 国产三级精品三级在线专区| 国产米奇在线777精品观看| 韩国av一区二区三区在线观看| 日本成人中文字幕在线视频| 欧美日韩久久不卡| 午夜视频一区二区三区| 欧美一区二区观看视频| 麻豆高清免费国产一区| 成人免费高清在线观看| 国产欧美一区二区精品秋霞影院| 日韩精品一区二| 五月天中文字幕一区二区| 亚洲国产成人在线| 国产精品成人一区二区艾草| 国产精品456| 欧美专区在线观看一区| 成人永久aaa| gogogo免费视频观看亚洲一| 国产亚洲欧美日韩日本| 欧美性猛片aaaaaaa做受| 亚洲男人天堂av| 99久久国产综合精品女不卡| 亚洲素人一区二区| 制服丝袜成人动漫| 免费高清在线一区| 久久亚洲精品小早川怜子| 成人黄色小视频| 一二三区精品视频| 日韩免费观看高清完整版在线观看| 激情六月婷婷久久| 欧美国产一区二区| 欧美性生活久久| 激情综合五月天| 成人免费一区二区三区视频 | 久久久精品综合| 福利一区二区在线| 婷婷中文字幕综合| 国产精品久久网站| 日韩一区二区不卡| 国产不卡免费视频| 性久久久久久久| 亚洲欧美日韩国产中文在线| 91精品久久久久久久91蜜桃| 国产精品一区二区无线| 亚洲一区中文日韩| 国产日韩精品久久久| 欧美制服丝袜第一页| 国模无码大尺度一区二区三区| 国产视频一区不卡| 日韩一区二区高清| 91香蕉国产在线观看软件| 久久99精品久久久久久国产越南| 亚洲一区二三区| 亚洲三级在线免费观看| 国产精品你懂的| 久久久精品黄色| 日韩一区二区三| 在线不卡一区二区| 欧美性色欧美a在线播放| 白白色 亚洲乱淫| 风流少妇一区二区| 国产成人小视频| 国产成人aaa|