vb 6显示执行存储过程时超时已到期

时间:2014-07-17 04:13:24

标签: vb6 sql-server-2005-express

当我尝试执行此存储过程时,它给出了超时过期错误,这是我的存储过程

ALTER procedure [dbo].[sp_rptExpMed]
(
  @Stocname as varchar(100),
  @date varchar(40),
  @Mode int
)
as
begin
if @Mode=1
    begin
    select DISTINCT  Em.*,M.DrugName,m.Category
    --,rate 
    from ExpiryMed Em inner join medicinaldrugs M on Em.Drugid=M.drugId
    LEFT join Purchase22011_2012 P on em.DrugID = P.ItemID and Em.batch=p.BatchNo
    order by M.DrugName,Em.Batch
    end
if @Mode=2
    begin
    select DISTINCT Em.*,M.DrugName,m.Category
    --,rate
     from ExpiryMed Em inner join medicinaldrugs M on Em.Drugid=M.drugId
    LEFT join Purchase22011_2012 P on em.DrugID = P.ItemID and Em.batch=p.BatchNo
    where ExpDate<@date
    order by M.DrugName,Em.Batch
    end
end

这有什么不对。任何人都可以建议我一种方法来避免此超时过期错误

1 个答案:

答案 0 :(得分:3)

可能存在这样的情况:您在过程中查询的表由于打开/未提交的事务而持有锁。尝试使用NOLOCK表提示以及表名称,如

select DISTINCT  Em.*,M.DrugName,m.Category
from ExpiryMed Em WITH (NOLOCK)
inner join medicinaldrugs M WITH (NOLOCK) on Em.Drugid=M.drugId
LEFT join Purchase22011_2012 P WITH (NOLOCK) on em.DrugID = P.ItemID 
and Em.batch=p.BatchNo
order by M.DrugName,Em.Batch

您也可以将事务隔离级别设置为READ UNCOMMITTED

相关问题