<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

    搜索

    •  

    積分與排名

    • 積分 - 202363
    • 排名 - 285

    最新評論

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

          需求描述:數據庫中有一主一從表,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 閱讀(283) 評論(1)  編輯  收藏 所屬分類: 數據庫(Sql server,My sql)

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

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


    網站導航:
     
    主站蜘蛛池模板: 毛片基地免费观看| 亚洲精品无码高潮喷水A片软| 亚洲成a∨人片在无码2023| 国产四虎免费精品视频| 亚洲视频一区在线观看| 久久综合给合久久国产免费| 亚洲AV永久无码精品水牛影视| 国产裸体美女永久免费无遮挡| 免费真实播放国产乱子伦| 国产成人久久精品亚洲小说| 免费一看一级毛片| 一级毛片在线免费播放| a级亚洲片精品久久久久久久| 国产免费伦精品一区二区三区 | 在线观看av永久免费| 亚洲一区二区三区成人网站| 在线观看人成网站深夜免费| 免费国产a理论片| 国产午夜亚洲精品午夜鲁丝片| 免费在线看黄网站| 久久亚洲精品中文字幕| 欧美在线看片A免费观看| 久久精品国产亚洲av天美18 | 无码人妻一区二区三区免费手机| 亚洲综合av一区二区三区| 国产一区二区免费在线| 国产免费高清69式视频在线观看 | 亚洲日本香蕉视频观看视频| 99在线精品免费视频九九视| 久久人午夜亚洲精品无码区| 亚洲综合色区在线观看| 99久久免费看国产精品| 亚洲人成网亚洲欧洲无码| 亚洲中文字幕伊人久久无码| 免费无码成人AV在线播放不卡| 亚洲成A人片在线播放器| 久久久久国产亚洲AV麻豆| 精品女同一区二区三区免费站| 99亚洲男女激情在线观看| 久久久久亚洲精品成人网小说| 免费鲁丝片一级观看|