<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

    搜索

    •  

    積分與排名

    • 積分 - 202494
    • 排名 - 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 閱讀(285) 評論(1)  編輯  收藏 所屬分類: 數據庫(Sql server,My sql)

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

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


    網站導航:
     
    主站蜘蛛池模板: 日韩精品视频免费观看| 免费精品国产日韩热久久| 亚洲乱亚洲乱少妇无码| 亚洲av午夜电影在线观看| 四色在线精品免费观看| 亚洲乱亚洲乱妇24p| 白白国产永久免费视频| 久久亚洲中文字幕无码| 免费国产在线观看老王影院| 美女黄频免费网站| 国外亚洲成AV人片在线观看| 黄网站免费在线观看| 日韩精品一区二区亚洲AV观看| **毛片免费观看久久精品| 2020年亚洲天天爽天天噜| 免费国产成人高清在线观看网站| 亚洲w码欧洲s码免费| 日韩a在线观看免费观看| 暖暖免费中文在线日本| 久久久无码精品亚洲日韩软件| 免费精品99久久国产综合精品| 亚洲综合无码一区二区三区| 久久WWW免费人成人片| 亚洲av无码日韩av无码网站冲| 在线a亚洲v天堂网2018| 成人自慰女黄网站免费大全| 亚洲伊人tv综合网色| 成熟女人牲交片免费观看视频 | 亚洲国产高清视频在线观看| 曰曰鲁夜夜免费播放视频| 亚洲美国产亚洲AV| 国产精品亚洲片在线观看不卡| 100000免费啪啪18免进| 免费的黄色网页在线免费观看| 日本亚洲视频在线| 免费特级黄毛片在线成人观看| 久久国产精品免费| 亚洲一区免费在线观看| 久久亚洲色一区二区三区| 无码国产精品一区二区免费| 国产成人亚洲精品播放器下载|