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

思勤無邪

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

   :: 首頁 :: 聯系 :: 聚合  :: 管理
  132 Posts :: 1 Stories :: 178 Comments :: 0 Trackbacks

公告

     吾日常三省吾身,曰思、曰勤、曰無邪。

積分與排名

  • 積分 - 187326
  • 排名 - 140

最新隨筆

最新評論

閱讀排行榜

評論排行榜

總結的一個存儲過程開發模板,主要是避免一些常見問題。
書寫規范為:SQL關鍵字均使用小寫。但是定義連接屬性,如SET NOCOUNT ON可以用大寫;變量采用Camel風格,單詞首字符大寫。

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

-- 先檢查存儲過程是否存在,如果存在,先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
    
-- 出于性能考慮,這是每個存儲過程的第一條語句
    -- 當SET NOCOUNT為ON時,將不向客戶端發送存儲過程中每個語句的DONE_IN_PROC消息。
        -- 如果存儲過程中包含的一些語句并不返回許多實際數據,則該設置由于大量減少了網絡流量,因此可顯著提高性能。

    SET NOCOUNT ON

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

    
-- 注釋:
    ---- 1、為方便調試,在存儲過程內部一律使用“--”代替“/* */”
    ---- 2、每個關鍵性操作請在前面注釋

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

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

    
-- 一次性清空表,請使用truncate代替delete
    truncate table tablename

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

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

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

    
-- 循環語句
    while (@xxx1 <> ?)
    
begin
        ……
    
end

    
-- 游標:
    ---- 盡量避免使用游標

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

    
---- 打開游標
    open cursor_xxx;

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

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

    
---- 結束游標
    close cursor_xxx;

    
---- 銷毀游標
    deallocate cursor_xxx;

    
-- 事務
    ---- 如果顯式使用事務,請注意SQL Server默認的事務隔離級別是讀提交(Read Committed)
    ---- 如果使用更高級別的事務隔離級別,請詳細閱讀幫助文檔,避免不必要的鎖阻塞
    begin tran
    
update ……;
    
commit;

    
-- 異常處理機制
    ---- 1、在第一次使用異常處理機制之前聲明異常變量
    ---- 2、對容易發生錯誤的操作,用trycatch進行異常捕獲(聲明變量不需要)
    ---- 3、在清理資源后,將錯誤記錄保存在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將錯誤返回給調用者

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

    
---- 返回錯誤信息
    raiserror (@ErrorMessage,
           
@ErrorSeverity,
           
@ErrorState);
    
    
---- 保存錯誤信息
    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 思勤無邪 閱讀(1237) 評論(0)  編輯 收藏 引用 所屬分類: 其他與技術相關
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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网站| 欧美一级午夜免费电影| 亚洲一区免费看| 亚洲欧美文学| 久久gogo国模裸体人体| 蜜桃av一区二区三区| 欧美护士18xxxxhd| 亚洲国产精品一区| 噜噜噜91成人网| 欧美va天堂在线| 亚洲国内在线| 亚洲无线视频| 久久久久久亚洲精品不卡4k岛国| 麻豆精品精华液| 欧美三级日本三级少妇99| 国产精品www色诱视频| 国产精品综合色区在线观看| 国内成+人亚洲+欧美+综合在线| 永久免费精品影视网站| 亚洲精选视频免费看| 亚洲欧美日韩国产一区二区三区 | 欧美日韩国产精品专区| 久久久久久久网站| 国产欧美日韩视频一区二区| 国内视频精品| 亚洲免费电影在线| 欧美伊人精品成人久久综合97| 欧美成人一区二区三区在线观看 | 欧美诱惑福利视频| 欧美激情一区二区三区全黄| 国产精品影视天天线| 亚洲精品色婷婷福利天堂| 西西裸体人体做爰大胆久久久| 欧美1区3d| 性18欧美另类| 国产精品成人一区二区三区吃奶| 亚洲日韩中文字幕在线播放| 久久久人人人| 亚洲免费一在线| 欧美国产日本韩| 好看的日韩视频| 亚洲在线观看| 亚洲毛片视频| 欧美精品一卡二卡| 亚洲国产精品久久久久秋霞影院| 欧美在线中文字幕| 一区二区国产日产| 欧美日韩国产不卡| 亚洲片国产一区一级在线观看| 久久婷婷麻豆| 久久久xxx| 1024国产精品| 毛片av中文字幕一区二区| 午夜视频一区| 国产精品裸体一区二区三区| 亚洲视频大全| 夜夜嗨av色综合久久久综合网| 欧美激情一区二区三区在线视频观看 | 亚洲三级观看| 蜜臀a∨国产成人精品| 国产一区二区成人| 久久精品首页| 欧美一区二区三区在| 国产精品实拍| 欧美在线视频免费播放| 亚洲已满18点击进入久久| 国产精品黄色| 欧美综合国产| 欧美一区精品| 在线观看日韩一区| 欧美国产丝袜视频| 免费影视亚洲| 亚洲美女中文字幕| 亚洲欧洲日产国码二区| 美女精品在线观看| 欧美成人综合一区| 久久综合久久久| 亚洲国内在线| 日韩亚洲国产欧美| 国产精自产拍久久久久久| 欧美一级片久久久久久久| 午夜精品一区二区三区在线视| 国产亚洲一区精品| 欧美1区免费| 欧美日韩国内自拍| 欧美一区二区国产| 久久精品国产77777蜜臀| 亚洲高清av在线| 亚洲精品国产系列| 国产精品国产精品国产专区不蜜| 欧美在线免费观看亚洲| 久久精品免费播放| 日韩午夜av在线| 亚洲一二三区在线观看| 在线成人激情视频| 亚洲肉体裸体xxxx137| 国产亚洲一区二区三区在线观看| 欧美国内亚洲| 国产伦精品一区二区三区免费 | 欧美二区乱c少妇| 在线性视频日韩欧美| 欧美一区二区精品久久911| 亚洲国产精品专区久久| 妖精成人www高清在线观看| 好吊视频一区二区三区四区 | 亚洲国产高清在线| 国产精品久久久久久久久| 久久综合给合久久狠狠色| 欧美激情国产日韩精品一区18| 欧美一级黄色网| 欧美国产在线电影| 久久精品视频播放| 国产精品红桃| 亚洲精品欧美精品| 精品999在线观看| 亚洲一卡二卡三卡四卡五卡| 亚洲精品欧美日韩专区| 亚洲欧美日韩视频二区| 99精品视频免费观看视频| 久久久免费精品视频| 亚洲欧美日韩综合一区| 女人色偷偷aa久久天堂| 久久久在线视频| 国产精品视频网站| 日韩天堂av| 99视频热这里只有精品免费| 久久久久国产精品麻豆ai换脸| 午夜激情久久久| 欧美日韩综合精品| 亚洲第一伊人| 亚洲精品欧美一区二区三区| 久久综合网色—综合色88| 久久久久久久成人| 国产麻豆精品视频| 亚洲制服少妇| 免费日韩av片| 激情久久五月| 午夜国产欧美理论在线播放| 一区二区久久久久| 欧美大片一区二区三区| 欧美激情中文字幕一区二区| 1769国内精品视频在线播放| 久久爱www| 久久精品欧洲| 国内精品久久久久久影视8 | 国产视频精品免费播放| 一区二区三区蜜桃网| 在线一区二区三区四区| 欧美激情视频一区二区三区在线播放| 免费成人高清在线视频| 影音先锋成人资源站| 久久综合精品国产一区二区三区| 免费观看成人网| 亚洲精品123区| 欧美激情2020午夜免费观看| 亚洲国产婷婷综合在线精品 | 久久精品在线免费观看| 国产日韩欧美精品一区| 欧美一区二区免费观在线| 久久综合久色欧美综合狠狠| 精品99一区二区| 欧美激情一区二区三区高清视频| 99视频有精品| 欧美一区亚洲二区| 一色屋精品视频免费看| 免费在线欧美视频| 中文在线一区| 久久综合国产精品| 一本色道久久综合亚洲精品按摩| 欧美午夜精品久久久| 午夜精品区一区二区三| 男男成人高潮片免费网站| 一区二区三区视频免费在线观看| 国产精品二区在线观看| 久久成人国产精品| 最新中文字幕亚洲| 久久精品久久99精品久久| 亚洲精品日韩在线观看| 国产美女高潮久久白浆| 麻豆91精品| 亚洲欧美春色| 亚洲青涩在线| 久久夜色精品亚洲噜噜国产mv| 欧美午夜精品伦理| 久久精品一本久久99精品| 99成人免费视频| 免费一区视频| 久久er99精品| 亚洲永久免费视频| 亚洲国产一区二区视频| 国产精品成人国产乱一区| 久久综合国产精品台湾中文娱乐网| 亚洲深夜影院| 亚洲黄色片网站| 久久亚洲综合色| 久久精品一二三| 午夜国产精品视频免费体验区| 日韩一二三在线视频播|