pb dw爲多表聯合查詢時,如何利用存儲過程同時更新多個表!

如圖:一個多表聯合查詢的dw

 當我們在界面中對該dw的信息進行修改並想保存的時候,突然發現dw的update功能中只能對其中一個表進行更新。如圖:

 

這讓人非常的苦惱。雖然可以通過後臺代碼進行表的操作和更新。但是總覺得這種方法太繁瑣。而且似乎不是正途。於是研究了一下是否可以通過存儲過程進行多表的更新呢。如圖:

 

pb的dw更新功能中有通過存儲過程進行更新的選項。於是在SQL中寫存儲過程本人用的是SQL2000比較落後。如圖:

 存儲過程內容如下:

CREATE PROCEDURE [dbo].[threeTupdate]
    @cardno varchar(50),
             @zdr int,
    @dqfqbz int,
    @kzsfzid int,
    @yxq datetime,
    @dqhke int,
    @mm varchar(50),
    @yhid int,
    @xlk int,
    @xz bit,
    @byhkts int,
    @fkje int,
    @kzsfz varchar(50),
    @kzxm varchar(50),
    @kztel varchar(11),
    @zjrid int,
    @kzsxfbl float,
    @zjsfz varchar(50),
    @zjxm varchar(50),
    @zjtel varchar(11),
    @zjsxfbl float

    

 AS
begin
      
         update info_card set  zdr = @zdr, dqfqbz = @dqfqbz, kzsfz = @kzsfzid, yxq = @yxq, dqhke = @dqhke, mm = @mm, yhid = @yhid, xlk = @xlk, xz = @xz, byhkts = @byhkts, fkje = @fkje where cardno = @cardno
         update info_kz set sfz = @kzsfz, xm = @kzxm, tel = @kztel, zjrid = @zjrid, sxfbl = @kzsxfbl where id = @kzsfzid
        update info_zj set sfz = @zjsfz, xm = @zjxm, tel = @zjtel, sxfbl = @zjsxfbl where id = @zjrid
end
GO
存儲過程中聲明的參數與dw中所有的列對應(三個表的列都包含在其中),而後用update語句分別更新三個表。這裏不需要理會dw中到底有多少行,不用我們去循環判斷哪一行有更新哪一行沒有更新,dw的更新機制會自行判斷。存儲過程寫好後,在dw的存儲過程更新界面中引入update存儲過程。並將每一行與每一個存儲過程參數相對應後保存即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章