两个关于存储过程的问题
1、假如有多个用户同时调用同一个存储过程,会有分先后顺序执行吗?
2、有一个表(table1),字段有ID,PO,code,记录有1000条。有一个存储过程sp1(作用是根据传递进来的PO和code参数,按一定的规则转换成我要的数据,保存到表table2),我想再写一个存储过程,把table1的每一条记录的PO和code,通过sp1转换成我要的数据,保存到表table2,这个存储过程该如何写呢?谢谢!
[解决办法]
1、假如有多个用户同时调用同一个存储过程,会有分先后顺序执行吗?
---------
如果,你的存储过程只是查询的话,我想是不会分先后的,如果有update,insert,delete 的话,是一定有循序(个人看法)
2、有一个表(table1),字段有ID,PO,code,记录有1000条。有一个存储过程sp1(作用是根据传递进来的PO和code参数,按一定的规则转换成我要的数据,保存到表table2),我想再写一个存储过程,把table1的每一条记录的PO和code,通过sp1转换成我要的数据,保存到表table2,这个存储过程该如何写呢?谢谢!
-----------------
我可以提供一个可以调用存储过程集的方法给你
select * into #t
from openrowset('sqloledb','ip';'sa';'','set fmtonly off ;exec sp1(''参数'')'
[解决办法]
1.
SQL Server針對每個不同的連接使用一個線程,因此在不同線程間,先後順序是不定的,對於更改數據庫的操作盡量使用事務進行.
2.
大致的思路是,使用遊標,針對每行數據,執行sp1存儲過程.
如果不想使用遊標,給你個建議,把sp1不做存儲過程,而作為一個自定義的SQL函數function,這樣,你在實現整個表的操作時,衹需要一條語句就OK,如下:
SELECT dbo.sp1([ID],[PO]) FROM table1
[解决办法]
1 会有先后顺序,有系统随机决定
2 agree楼上
[解决办法]
--先将table1中的PO号更新update table1set po=转换函数(po)--将之后的数据插入table2,如果是一次性的话select * into table2 from table2