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

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

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

    隨筆 - 251  文章 - 504  trackbacks - 0
    <2008年11月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456

    本博客系個人收集材料及學習記錄之用,各類“大俠”勿擾!

    留言簿(14)

    隨筆分類

    收藏夾

    My Favorite Web Sites

    名Bloger

    非著名Bloger

    搜索

    •  

    積分與排名

    • 積分 - 204309
    • 排名 - 283

    最新評論

          最近一個項目碰見要用存儲過程的情況,通過重新學習。已初步完成功能,現列出來。大家給個意見。

          需求描述:數據庫中有一主一從表,A和B;A和B是一對多的關系。另有和A、B結構相同的表C和表D。要實現,通過表A的主鍵id,把與此id值相關的記錄(表A和表B中)分別更新插入到表C和表D中,同時要求有事務控制。

          分析要點:1)存儲過程需要傳入一個參數,id。2)表B中的記錄多少不定,可能需要插入多條記錄。3)整個過程需要事務控制。

          實現代碼如下:
    CREATE PROCEDURE query_pro_info  
     
    @pi_id int
    AS
    begin
       
    begin transaction
       
    if exists (select * from pro_ent_info where PI_ID=@pi_id)
          
    delete pro_ent_info where PI_ID=@pi_id
          
    insert into pro_ent_info(EI_ID,EP_ID,EP_TYP,CI_ID,CI_NUM,CI_TOT,CI_TYP,PI_ID,PI_NUM,PI_NAM,PI_CLI,PI_CLI_TEL,PI_CLI_MAN,PI_ARE,PI_CAT,PI_STA,PI_MAN,PI_ADD,PI_REM,PI_CHE,PI_PLA_SPA,PI_PLA_BEG,PI_PLA_END,PI_CRE_DAT,PI_CRE_MAN,PI_MOD_DAT,PI_MOD_MAN)select EI_ID,EP_ID,EP_TYP,CI_ID,CI_NUM,CI_TOT,CI_TYP,PI_ID,PI_NUM,PI_NAM,PI_CLI,PI_CLI_TEL,PI_CLI_MAN,PI_ARE,PI_CAT,PI_STA,PI_MAN,PI_ADD,PI_REM,PI_CHE,PI_PLA_SPA,PI_PLA_BEG,PI_PLA_END,PI_CRE_DAT,PI_CRE_MAN,PI_MOD_DAT,PI_MOD_MAN from pro_info where pro_info.PI_ID=@pi_id
       
    if exists (select * from pro_ent_cost where PI_ID=@pi_id)
          
    delete pro_ent_cost where PI_ID=@pi_id
          
    insert into pro_ent_cost(PI_ID,PC_ID,PC_DIV,PC_DIV_SEQ,PC_BUD_LAB,PC_BUD_MAT,PC_BUD_DEV,PC_BUD_CMP,PC_BUD_TOT,PC_BUD_REM,PC_PLA_LAB,PC_PLA_MAT,PC_PLA_DEV,PC_PLA_CMP,PC_PLA_TOT,PC_PLA_REM,PC_ACT_LAB,PC_ACT_MAT,PC_ACT_DEV,PC_ACT_CMP,PC_ACT_TOT,PC_ACT_REM,PC_DIV_PLA_BEG,PC_DIV_PLA_END,PC_DIV_PLA_SPA,PC_DIV_ACT_BEG,PC_DIV_ACT_END,PC_DIV_ACT_SPA,PC_DIV_SPA_ABN,PC_PRO_REC,PC_DIV_PAI,PC_DIV_SHO,PC_CHE,PC_OFF,PC_REM,PC_CRE_DAT,PC_CRE_MAN,PC_MOD_DAT,PC_MOD_MAN)select PI_ID,PC_ID,PC_DIV,PC_DIV_SEQ,PC_BUD_LAB,PC_BUD_MAT,PC_BUD_DEV,PC_BUD_CMP,PC_BUD_TOT,PC_BUD_REM,PC_PLA_LAB,PC_PLA_MAT,PC_PLA_DEV,PC_PLA_CMP,PC_PLA_TOT,PC_PLA_REM,PC_ACT_LAB,PC_ACT_MAT,PC_ACT_DEV,PC_ACT_CMP,PC_ACT_TOT,PC_ACT_REM,PC_DIV_PLA_BEG,PC_DIV_PLA_END,PC_DIV_PLA_SPA,PC_DIV_ACT_BEG,PC_DIV_ACT_END,PC_DIV_ACT_SPA,PC_DIV_SPA_ABN,PC_PRO_REC,PC_DIV_PAI,PC_DIV_SHO,PC_CHE,PC_OFF,PC_REM,PC_CRE_DAT,PC_CRE_MAN,PC_MOD_DAT,PC_MOD_MAN from pro_cost where pro_cost.PI_ID=@pi_id
       
    if(@@error<>0)
          
    begin
             
    print('rollback transaction')
             
    rollback transaction
             
    return 0
           
    end
           
    commit transaction

    end
    GO

           經過調試,功能基本正常。只是事務控制處理部分不知道寫的對不對。望各位指正!
    posted on 2008-11-14 09:52 matthew 閱讀(288) 評論(1)  編輯  收藏 所屬分類: 數據庫(Sql server,My sql)

    FeedBack:
    # re: SQL server存儲過程 2008-11-14 13:28 
    唐,你的論文就是事務嘛!  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 精品国产日韩亚洲一区91| 亚洲校园春色小说| 免费一级全黄少妇性色生活片 | 人妻18毛片a级毛片免费看| 国产高清在线精品免费软件| 亚洲人成网站18禁止久久影院| 91精品免费不卡在线观看| 亚洲国产综合精品中文第一区| 久久大香香蕉国产免费网站| 久久国产亚洲电影天堂| 四虎国产精品永久免费网址 | 亚洲色成人中文字幕网站| 两性色午夜免费视频| 久久精品国产亚洲AV麻豆不卡| 久久美女网站免费| 亚洲综合视频在线观看| 亚洲av无码乱码在线观看野外| 野花视频在线官网免费1| 亚洲精品99久久久久中文字幕 | 久久久久亚洲国产| 国产男女猛烈无遮挡免费网站| 黄色三级三级三级免费看| 亚洲精品无码MV在线观看| 久久精品毛片免费观看| 亚洲欧美中文日韩视频| 亚洲色偷偷狠狠综合网| 日本免费人成视频在线观看| 亚洲香蕉在线观看| 免费在线观看的黄色网址| 丰满人妻一区二区三区免费视频| 亚洲精品国产成人专区| 成人毛片免费观看视频| 一级黄色免费大片| 97se亚洲综合在线| 免费人成网站在线播放| 色欲国产麻豆一精品一AV一免费 | 性色av极品无码专区亚洲| 国产亚洲成AV人片在线观黄桃 | 亚洲一级视频在线观看| 亚洲AⅤ优女AV综合久久久| 99亚偷拍自图区亚洲|