<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

    搜索

    •  

    積分與排名

    • 積分 - 204293
    • 排名 - 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 
    唐,你的論文就是事務嘛!  回復  更多評論
      

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


    網站導航:
     
    主站蜘蛛池模板: 免费A级毛片无码视频| 日韩色日韩视频亚洲网站| 久久久影院亚洲精品| 亚洲国产精品无码中文字| 亚洲精品蜜桃久久久久久| 亚洲日韩小电影在线观看| 亚洲真人无码永久在线| 亚洲中文字幕无码一区| 亚洲色欲一区二区三区在线观看| 亚洲免费无码在线| 中文字幕人成人乱码亚洲电影| 国产亚洲大尺度无码无码专线 | 国产免费人成视频在线播放播| 亚洲hairy多毛pics大全| 亚洲av日韩精品久久久久久a| 亚洲av无码一区二区三区四区| 国产精品无码亚洲一区二区三区| 日本系列1页亚洲系列| 免费在线人人电影网| 亚洲黄片手机免费观看| 国产偷伦视频免费观看| 99re这里有免费视频精品| 成人福利免费视频| 免费无码一区二区三区蜜桃大| 国产jizzjizz免费看jizz| 久久乐国产精品亚洲综合| 亚洲av片劲爆在线观看| 亚洲一卡二卡三卡四卡无卡麻豆| 久久久久久亚洲精品影院| 国产综合激情在线亚洲第一页| 一级做a爰片久久毛片免费陪 | 亚洲真人无码永久在线| 91久久亚洲国产成人精品性色| 亚洲AV成人无码天堂| 99亚洲乱人伦aⅴ精品| 岛国岛国免费V片在线观看| 57pao一国产成视频永久免费| 一区二区无码免费视频网站| 免费欧洲美女牲交视频| 亚洲国产精品福利片在线观看| 亚洲国产精品免费在线观看|