积极答复者
SQL下“存储过程”的"执行顺序"

问题
-
Exec Usp_TransferDAListToEnergyDataN @MeterNo,@MeterType,@DATime,@IncreaseQty,@Unit;
Exec Usp_TransferDAListToEnergyDataBySum @MeterNo,@MeterType,@DATime,@IncreaseQty,@Unit;
这样两个执行存储过程的语句是在一个SQL中的。
请问大师:
1、数据库是“执行完第一个之后再执行第二个”,还是“两个一起执行” ?
2、 如果“两个一起执行”的话,当两个操作到“同一个表”,不就会出现死锁 ?
3、如果先执行完第一个,再去执行第二个,“效率不就很低”吗?
Science and technology is my lover.
答案
-
顺序执行的
如果是并发了,就乱套了,你可以把它理解为程序代码,一个过程中的程序代码是顺序执行下去的,就算在这个过程中调用了其他过程也一样
就逄你在程序中用多线程,它的执行其实也是顺序的,只是你用多线程的话,可以让前一句不需要在执行完成后就去执行后一句
- 已标记为答案 Amy PengMicrosoft employee, Moderator 2012年11月2日 1:00
-
先执行【存储过程一】,再执行【存储过程二】,如果【存储过程一】内部调用【存储过程二】了,也是顺序执行的。
如果【存储过程一】中调用【存储过程二】了,你上面的代码就意味着【存储过程二】要执行两次。
- 已建议为答案 Amy PengMicrosoft employee, Moderator 2012年10月29日 5:45
- 已标记为答案 Amy PengMicrosoft employee, Moderator 2012年11月2日 0:59
全部回复
-
顺序执行的
如果是并发了,就乱套了,你可以把它理解为程序代码,一个过程中的程序代码是顺序执行下去的,就算在这个过程中调用了其他过程也一样
就逄你在程序中用多线程,它的执行其实也是顺序的,只是你用多线程的话,可以让前一句不需要在执行完成后就去执行后一句
- 已标记为答案 Amy PengMicrosoft employee, Moderator 2012年11月2日 1:00
-
先执行【存储过程一】,再执行【存储过程二】,如果【存储过程一】内部调用【存储过程二】了,也是顺序执行的。
如果【存储过程一】中调用【存储过程二】了,你上面的代码就意味着【存储过程二】要执行两次。
- 已建议为答案 Amy PengMicrosoft employee, Moderator 2012年10月29日 5:45
- 已标记为答案 Amy PengMicrosoft employee, Moderator 2012年11月2日 0:59