SQL更新多条数据
?
問(wèn)題:有兩個(gè)不同的表,其中都有一個(gè)編號(hào)的字段,而且存儲(chǔ)的內(nèi)容是相同的,需要將一張表中的另外一些字段依據(jù)編號(hào)去與另一個(gè)表中編號(hào)對(duì)應(yīng)來(lái)更新到另一個(gè)表中。
方法:由于在sql中是不支持同時(shí)更新多條包含編號(hào)的數(shù)據(jù)的,所以當(dāng)我們要更新多條數(shù)據(jù)的時(shí)候我們需要進(jìn)行逐條的更新操作,這個(gè)時(shí)候我們需要用到游標(biāo)。游標(biāo)是只能在存儲(chǔ)過(guò)程中執(zhí)行的,所以我們需要建立一個(gè)存儲(chǔ)過(guò)程
Create ?PROCEDURE[dbo].[PP5_IN_Money]
AS
DECLARE
@t??? varchar(50),
@in_Money decimal(18,2)
BEGIN
?????? DECLARE ttt_cusor CURSOR FOR
??????? select PUR_PAYMENT_REQ.Proposer_No,PUR_PAYMENT_REQ.IN_Moneyfrom PUR_PAYMENT_REQ,pur_paymentwhere PUR_PAYMENT_REQ.Proposer_No=pur_payment.REQ_NO
??????? --將搜到的數(shù)據(jù)放入到游標(biāo)ttt_cusor中??
??????? OPEN ttt_cusor
?????? FETCH NEXT FROM ttt_cusorINTO @t,@in_Money
?????? --讀取ttt_cusor游標(biāo)中的第一條數(shù)據(jù)
?????? WHILE @@FETCH_STATUS=0
?????? BEGIN
?????? update pur_payment
?????? set pur_payment.IN_Money=@in_MoneyWHERE pur_payment.REQ_NO=@t
?????? FETCH NEXT FROM ttt_cusorINTO @t,@in_Money
?????? --讀取ttt_cusor游標(biāo)中的下一條數(shù)據(jù)
?????? END???
?????? CLOSE ttt_cusor
?????? DEALLOCATE ttt_cusor
轉(zhuǎn)載于:https://www.cnblogs.com/dekevin/archive/2012/04/25/2471836.html
總結(jié)
- 上一篇: 摩尔庄园中控台怎么充电
- 下一篇: SQL 异常处理 Begin try e