亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么要在BEGIN和END里面再寫一遍 ?

為什么要在BEGIN和END里面再寫一遍 ?

ibeautiful 2022-09-17 15:11:14
CREATE PROCEDURE PK_SalaryAddASdeclare @O_ID nvarchar(20),@A_Salary floatdeclare mycursor cursor for select O_ID,A_Salary from AddSalaryopen mycursorfetch next from mycursor into @O_ID,@A_Salarywhile(@@fetch_status = 0)beginUpdate OriginSalary set O_Salary=O_Salary+@A_Salary where O_ID=@O_IDfetch next from mycursor into @O_ID,@A_Salaryendclose mycursordeallocate mycursorGO
查看完整描述

3 回答

?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

fetch next from mycursor into @O_ID,@A_Salary
while(@@fetch_status = 0)
begin
Update OriginSalary set O_Salary=O_Salary+@A_Salary where O_ID=@O_ID
fetch next from mycursor into @O_ID,@A_Salary
end
假設表tempTable
id,text
1,T1
2,T2
3,T3
面代碼省略,現在一句一句看fetch next from mycursor into @O_ID,@A_Salary(1)
fetch into 是移動游標提取數據。(1)句就是把第一行兩列數據放到@O_ID,@A_Salary中,游標提留在第一行
while(@@fetch_status = 0)
{
--正常來說你要在這里循環提取每行數據,不然不會用到游標這個概念。
Begin end是什么?Begin就是“{”,END就是“}”
說到這了 你說為什么要寫在{}里?如果不寫,游標只停留在第一行,不是嗎?
好比什么呢?就好比
int i=0
while(i<100)
{
i++;這里是i循環,你的問題是提取數據的循環,意思是一樣的
}
}


查看完整回答
反對 回復 2022-09-21
?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

查詢出來的結果如果有多個記錄的話,執行完一條update語句后需要返回下一條記錄,要重新把游標賦值,不然的話會出現死循環,這條是必須的

查看完整回答
反對 回復 2022-09-21
?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

begin end 里是循環,目的是循環取游標

查看完整回答
反對 回復 2022-09-21
  • 3 回答
  • 0 關注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號