存储过程调用前的判断

zxinglove 2011-04-15 01:07:13
我有一个批处理的存储过程,客户端的程序会开一个线程,持续的调用。但是有时候还没有执行完,新的调用又开始了。这样数据就会有问题。我该怎么来解决呢?
我不能用代理,因为代理一分钟运行一次,时间太长了。
我希望在执行的时候,就去判断上一个存储过程是不是已经执行完,如果上一次没有执行完,本次就不执行了。
...全文
82 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
rucypli 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wwwwgou 的回复:]
SQL code
--仅供参考
CREATE TABLE tb_procedure_status
(
id INT IDENTITY,
[procname] VARCHAR(100),
[status] INT --1: busy 0:not busy
)

ALTER PROC your_procedure AS
BEGIN
DECLARE ……
[/Quote].
--小F-- 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wwwwgou 的回复:]
SQL code
--仅供参考
CREATE TABLE tb_procedure_status
(
id INT IDENTITY,
[procname] VARCHAR(100),
[status] INT --1: busy 0:not busy
)

ALTER PROC your_procedure AS
BEGIN
DECLARE ……
[/Quote]
学习
Barton 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wwwwgou 的回复:]
SQL code
--仅供参考
CREATE TABLE tb_procedure_status
(
id INT IDENTITY,
[procname] VARCHAR(100),
[status] INT --1: busy 0:not busy
)

ALTER PROC your_procedure AS
BEGIN
DECLARE ……
[/Quote]

+1
Shawn 2011-04-15
  • 打赏
  • 举报
回复
--仅供参考
CREATE TABLE tb_procedure_status
(
id INT IDENTITY,
[procname] VARCHAR(100),
[status] INT --1: busy 0:not busy
)

ALTER PROC your_procedure AS
BEGIN
DECLARE @IsBusy INT
SET @IsBusy = 1

IF NOT EXISTS(SELECT 1 FROM tb_procedure_status WHERE procname = 'your_procedure')
INSERT tb_procedure_status([procname], [status]) VALUES('your_procedure', 0)

IF EXISTS(SELECT 1 FROM tb_procedure_status WHERE procname = 'your_procedure' AND [status] = 0)
SET @IsBusy = 0

IF @IsBusy = 0
BEGIN
UPDATE tb_procedure_status SET [status] = 1 WHERE [procname] = 'your_procedure'
--your code
UPDATE tb_procedure_status SET [status] = 0 WHERE [procname] = 'your_procedure'
END
END
zxinglove 2011-04-15
  • 打赏
  • 举报
回复
事物我加了呀,也不行
AcHerat 2011-04-15
  • 打赏
  • 举报
回复
程序里加事务处理。存储过程加也可以。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧