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

思勤無(wú)邪

上學(xué)時(shí),因我年齡最小,個(gè)頭也最小,上課時(shí),就像大猩猩堆里的猴一般。如今,這猴偶爾也把最近的一些情況寫在這里。

   :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  132 Posts :: 1 Stories :: 178 Comments :: 0 Trackbacks

公告

     吾日常三省吾身,曰思、曰勤、曰無(wú)邪。

積分與排名

  • 積分 - 187326
  • 排名 - 140

最新隨筆

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

總結(jié)的一個(gè)存儲(chǔ)過(guò)程開發(fā)模板,主要是避免一些常見問(wèn)題。
書寫規(guī)范為:SQL關(guān)鍵字均使用小寫。但是定義連接屬性,如SET NOCOUNT ON可以用大寫;變量采用Camel風(fēng)格,單詞首字符大寫。

/**********************************************
作者:    XXX
創(chuàng)建日期:YYYY-MM-DD
功能描述:(清楚、詳盡。如:本存儲(chǔ)過(guò)程主要用于生成主鍵ID,
    為了適應(yīng)分布式數(shù)據(jù)庫(kù)的應(yīng)用,采用SiteID(三位)+YYYYMMDD(八位)+順序位(八位)組成BigInt類型編碼。)
-----------------------------------------------
修改者:
修改日期:
修改描述:(如:本次修改加入了對(duì)存儲(chǔ)過(guò)程的錯(cuò)誤捕獲。)
-----------------------------------------------
傳入?yún)?shù):
          @X1
           數(shù)據(jù)類型:
             描述:
          @X2
           數(shù)據(jù)類型:
             描述:
傳出參數(shù):
          @X1
           數(shù)據(jù)類型:
             描述:
返回值:
          @XX
           數(shù)據(jù)類型:
             描述:
*********************************************
*/

-- 先檢查存儲(chǔ)過(guò)程是否存在,如果存在,先drop掉
if Object_Id(N'[dbo].[P_xxxx]', N'P'is not null
begin
    
drop procedure [dbo].[P_xxxx]
end
go 

create procedure [dbo].[P_xxxx]
    
@xxx1 DataType,
    
@xxx2 DataType output
as
begin
    
-- 出于性能考慮,這是每個(gè)存儲(chǔ)過(guò)程的第一條語(yǔ)句
    -- 當(dāng)SET NOCOUNT為ON時(shí),將不向客戶端發(fā)送存儲(chǔ)過(guò)程中每個(gè)語(yǔ)句的DONE_IN_PROC消息。
        -- 如果存儲(chǔ)過(guò)程中包含的一些語(yǔ)句并不返回許多實(shí)際數(shù)據(jù),則該設(shè)置由于大量減少了網(wǎng)絡(luò)流量,因此可顯著提高性能。

    SET NOCOUNT ON

    
-- 定義錯(cuò)誤變量,為raiserror使用
    declare @ErrorMessage nvarchar(4000);
    
declare @ErrorSeverity int;
    
declare @ErrorState int;

    
-- 注釋:
    ---- 1、為方便調(diào)試,在存儲(chǔ)過(guò)程內(nèi)部一律使用“--”代替“/* */”
    ---- 2、每個(gè)關(guān)鍵性操作請(qǐng)?jiān)谇懊孀⑨?/span>

    
-- 變量定義:
    ---- 1、不要在循環(huán)中定義變量
    ---- 2、如果變量是用于存儲(chǔ)某個(gè)字段的值,請(qǐng)使變量類型(包括精度)和字段類型一致
    ---- 3、最好顯示的為變量初始化

    
-- 變量賦值:
    ---- 使用set @xxx = ?,不要用早期版本的select @xxx = ?方式
    ---- 從SQL中為變量賦值采用
    select @xxx1 = col1,
           
@xxx2 = col2
    
from tabelname

    
-- 一次性清空表,請(qǐng)使用truncate代替delete
    truncate table tablename

    
-- insert語(yǔ)句要把字段名寫全
    insert into tablename(col1, col2…)
    
values(@xxx1@xxx2…);

    
-- 批量插入
    insert into tablename1(col1, col2…) 
    
select col1, col2…
    
from tablename2
    ……

    
-- 判斷語(yǔ)句
    if (@xxx1 = ? or @xxx2 = ?)
    
begin
        ……
    
end
    
else
    
begin
        ……
    
end

    
-- 循環(huán)語(yǔ)句
    while (@xxx1 <> ?)
    
begin
        ……
    
end

    
-- 游標(biāo):
    ---- 盡量避免使用游標(biāo)

    
---- 定義游標(biāo)
    declare cursor_xxx cursor for
    
select col1, col2 …
    
from tablename
    
where col1 = @xxx;

    
---- 打開游標(biāo)
    open cursor_xxx;

    
---- 將游標(biāo)中的值取到變量中
    fetch next from cursor_xxx
    
into @xxx1@xxx2 …;

    
---- 開始游標(biāo)循環(huán)
    while (@@fetch_status = 0)
    
begin
        ……
    
fetch next from cursor_xxx
    
into @xxx1@xxx2 …; 
    
end

    
---- 結(jié)束游標(biāo)
    close cursor_xxx;

    
---- 銷毀游標(biāo)
    deallocate cursor_xxx;

    
-- 事務(wù)
    ---- 如果顯式使用事務(wù),請(qǐng)注意SQL Server默認(rèn)的事務(wù)隔離級(jí)別是讀提交(Read Committed)
    ---- 如果使用更高級(jí)別的事務(wù)隔離級(jí)別,請(qǐng)?jiān)敿?xì)閱讀幫助文檔,避免不必要的鎖阻塞
    begin tran
    
update ……;
    
commit;

    
-- 異常處理機(jī)制
    ---- 1、在第一次使用異常處理機(jī)制之前聲明異常變量
    ---- 2、對(duì)容易發(fā)生錯(cuò)誤的操作,用trycatch進(jìn)行異常捕獲(聲明變量不需要)
    ---- 3、在清理資源后,將錯(cuò)誤記錄保存在ExecProcdure_ErrorLog表中
    ------ ExecProcdure_ErrorLog建表腳本如下:
    ------ create table dbo.ExecProcdure_ErrorLog(
    ------ [ID] [bigint] identity(1, 1) not null,
    ------ [ErrorNumber] [int] null,
    ------ [ErrorSeverity] [int] null,
    ------ [ErrorState] [int] null,
    ------ [ErrorProcedure] [nvarchar](200) null,
    ------ [ErrorLine] [nvarchar](50) null,
    ------ [ErrorMessage] [nvarchar](4000) null,
    ------ [ErrorDateTime] [datetime] null,
    ------ constraint [PK_ExecProcdure_ErrorLog] primary key clustered
    ------ ([ID] asc ) 
    ------ with (IGNORE_DUP_KEY = OFF) ON [primary]
    ------ ) ON (primary]
    ---- 4、最后使用raiserror將錯(cuò)誤返回給調(diào)用者

    
---- 錯(cuò)誤處理例子
    ……
    
begin try
        ……
    
end try
    
---- begin catch 要緊跟著end try,中間不允許有其他語(yǔ)句
    begin catch
    
---- 清理上面try中使用的資源,如刪除臨時(shí)表、銷毀游標(biāo)、回滾事務(wù)等
    ……
    
---- 設(shè)置錯(cuò)誤變量
    set @ErrorMessage = ERROR_mESSAGE(),
    
set @ErrorSeverity = ERROR_SEVERITY(),
    
set @ErrorState = ERROR_STATE();

    
---- 返回錯(cuò)誤信息
    raiserror (@ErrorMessage,
           
@ErrorSeverity,
           
@ErrorState);
    
    
---- 保存錯(cuò)誤信息
    insert into ExecProcdure_ErrorLog
        (ErrorNumber,
        ErrorSeverity,
        ErrorState,
        ErrorProcedure,
        ErrorLine,
        ErrorMessage,
        ErrorDateTime)
    
select
        ERROR_NUMBER() 
as ErrorNumber,
        ERROR_SEVERITY() 
as ErrorSeverity,
        ERROR_STATE() 
as ErrorState,
        ERROR_PROCEDURE() 
as ErrorProcedure,
        ERROR_LINE() 
as ErrorLine,
        ERROR_MESSAGE() 
as ErrorMessage,
        
getdate() as ErrorDateTime;

    
end catch

    ……

end
posted on 2007-02-25 14:58 思勤無(wú)邪 閱讀(1237) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 其他與技術(shù)相關(guān)
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲国产第一| 国产精品一区久久| 在线观看91精品国产入口| 亚洲精品国产精品乱码不99 | 亚洲国产清纯| 国产亚洲精品v| 一区二区三区国产精品| 亚洲精品视频免费在线观看| 久久精品99国产精品| 午夜精品国产| 国产精品进线69影院| 日韩视频不卡| 夜夜嗨av一区二区三区网页| 免费在线国产精品| 欧美电影在线免费观看网站| 影音先锋在线一区| 久久精品一二三区| 久热这里只精品99re8久| 国产一区二区你懂的| 欧美一级在线亚洲天堂| 久久久久国产精品厨房| 国内偷自视频区视频综合| 久久www免费人成看片高清| 久久精品二区亚洲w码| 国产精品夜夜夜一区二区三区尤| 在线亚洲一区二区| 亚洲欧美日产图| 国产精品日韩精品欧美在线| 亚洲欧美日韩在线不卡| 久久精彩视频| 影音先锋日韩精品| 欧美国产日韩xxxxx| 亚洲伦理在线观看| 一区二区三区|亚洲午夜| 欧美视频在线观看免费网址| 在线一区亚洲| 久久riav二区三区| 尹人成人综合网| 欧美久久一区| 亚洲性av在线| 久久综合伊人77777蜜臀| 亚洲欧美日韩高清| 亚洲男女自偷自拍| 久久午夜精品| 亚洲精品日韩精品| 国产精品久久久久77777| 欧美一区二区三区在| 欧美高清成人| 亚洲一区影音先锋| 狠狠爱成人网| 欧美激情一区二区三区蜜桃视频| 一区二区三区国产盗摄| 久久最新视频| 99精品热6080yy久久 | 亚洲国产精品激情在线观看| 亚洲网站在线| 一区二区三区无毛| 欧美日韩国产综合网 | 亚洲激情在线激情| 性亚洲最疯狂xxxx高清| 亚洲电影网站| 国产精品久久久久久影视| 久久这里有精品视频| 夜夜嗨av一区二区三区四季av| 久久www成人_看片免费不卡| 日韩写真视频在线观看| 国产日韩欧美不卡| 欧美日韩国产经典色站一区二区三区| 性欧美办公室18xxxxhd| 日韩视频一区二区三区| 久久久久久国产精品一区| 99riav国产精品| 国内精品美女av在线播放| 欧美日韩三区| 美日韩精品视频免费看| 亚洲性夜色噜噜噜7777| 亚洲二区视频| 久久久国产精品一区二区三区| 夜夜夜久久久| 在线成人欧美| 国产欧美日韩综合| 欧美日韩一区二区精品| 麻豆成人在线播放| 欧美在线观看一二区| 一本色道精品久久一区二区三区| 男人的天堂成人在线| 欧美在线播放高清精品| 一级日韩一区在线观看| 亚洲黄色影片| 极品av少妇一区二区| 国产精品亚洲аv天堂网| 欧美另类视频| 欧美大片91| 美女被久久久| 久久蜜桃av一区精品变态类天堂| 亚洲尤物在线| 亚洲桃色在线一区| 亚洲精品影院在线观看| 亚洲国产日韩一区二区| 欧美国产视频在线观看| 男女激情视频一区| 另类激情亚洲| 麻豆国产精品va在线观看不卡| 销魂美女一区二区三区视频在线| 中文久久乱码一区二区| 一本色道久久综合狠狠躁的推荐| 亚洲日本va午夜在线影院| 亚洲国产精品成人| 亚洲国产精品电影在线观看| 亚洲成色www久久网站| 亚洲成色最大综合在线| 亚洲激情综合| 日韩网站在线观看| 亚洲精品无人区| 亚洲人成免费| 在线成人www免费观看视频| 国产亚洲综合精品| 国产真实久久| 激情久久久久久久| 伊甸园精品99久久久久久| 国产精品一区二区久激情瑜伽| 国产精品视频久久一区| 国产精品一区久久久| 国产日产高清欧美一区二区三区| 国产老肥熟一区二区三区| 国产亚洲精品7777| 亚洲福利视频一区二区| 亚洲日本va午夜在线影院| 一区二区三区国产在线观看| 亚洲综合色噜噜狠狠| 欧美在线三级| 久久亚洲精品欧美| 亚洲丰满在线| 一本色道久久| 欧美一区二区三区精品电影| 久久久久网站| 欧美精品日韩综合在线| 国产精品久久激情| 国内一区二区三区在线视频| 最新国产乱人伦偷精品免费网站| 日韩亚洲欧美一区二区三区| 亚洲一区二区欧美| 久久久久久久一区二区三区| 欧美高清视频一区| 夜夜爽99久久国产综合精品女不卡| 亚洲综合色噜噜狠狠| 久久久夜夜夜| 欧美视频导航| 狠狠综合久久| 一二三区精品| 久久夜色精品国产噜噜av| 亚洲黑丝在线| 欧美一区二区成人6969| 欧美成人精品h版在线观看| 欧美日韩另类视频| 激情视频一区| 亚洲一区二区三区视频播放| 久久久欧美精品| aa级大片欧美| 久久蜜桃香蕉精品一区二区三区| 欧美视频观看一区| 91久久精品国产91久久性色| 午夜在线不卡| 亚洲精品久久久久久下一站| 欧美一区二区三区免费看| 欧美人与性动交α欧美精品济南到| 国产日韩精品一区| 亚洲视频观看| 亚洲成色www久久网站| 午夜在线视频观看日韩17c| 欧美精品久久99久久在免费线| 国产亚洲精品一区二555| 亚洲色图制服丝袜| 欧美顶级大胆免费视频| 欧美影院成人| 美女视频黄 久久| 国产欧美综合一区二区三区| 亚洲最新视频在线| 一区二区三区不卡视频在线观看| 久久久久久999| 日韩亚洲欧美精品| 老鸭窝亚洲一区二区三区| 国产精品色婷婷| 亚洲桃花岛网站| 亚洲激情综合| 久久综合伊人77777麻豆| 国产一区二区三区观看| 亚洲欧美日韩国产| 一区二区毛片| 欧美日韩国产综合久久| 亚洲区免费影片| 欧美电影在线免费观看网站| 久久久高清一区二区三区| 国产女人精品视频| 亚洲欧美日韩在线综合| 亚洲伦理在线观看| 欧美国产视频日韩| 亚洲精品五月天| 亚洲欧洲久久| 欧美精品福利|