首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

两个关于存储过程的有关问题

2012-03-06 
两个关于存储过程的问题1、假如有多个用户同时调用同一个存储过程,会有分先后顺序执行吗?2、有一个表(table1

两个关于存储过程的问题
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楼上
[解决办法]

SQL code
--先将table1中的PO号更新update table1set po=转换函数(po)--将之后的数据插入table2,如果是一次性的话select * into table2 from table2 

热点排行