【发布时间】:2015-07-08 19:54:33
【问题描述】:
我正在尝试执行以下执行存储过程的命令:
exec FSDBMR.dbo.usp_zPlannedOrder 16352705, 0.0000, 'Y'
但是它返回一个空表:
但是,当我通过 Web 应用程序执行存储过程时,它确实返回了一个结果,但当我使用 SQL Server Management Studio 运行它时却没有。
如何运行存储过程并获得它应该返回的结果?存储过程没有问题,但以防万一:
USE [FSDBMR]
GO
/****** Object: StoredProcedure [dbo].[usp_zPlannedOrder] Script Date: 07/08/2015 15:46:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[usp_zPlannedOrder]
@anReportInstanceID int
,@afmultiplier float
,@DeleteTempData varchar(1) = 'Y' -- 'Y' means delete the temp data
as
select im.ItemNumber
,case
when im.MakeBuyCode = 'M'
then im.Planner
else im.Buyer
end as PlannerBuyer -- two type, 'C' and 'S'
,imd.ReplanCode
,im.LastPeriodReviewDate ReplanDate
,im.ItemDescription
,im.ItemUM
,im.ItemRevision
,im.MakeBuyCode
,im.ItemType
,im.ItemStatus
,im.OrderPolicy
,im.IsInspectionRequired
,im.DecimalPrecision
,imd.OnHandQuantity
,case
when rsd.SupplyDemandType = 'D' or rsd.SupplyDemandType = 'S'
then convert(char(1),rsd.StartForecastPeriod)
else ''
end StartForecastPeriod
,case
when rsd.SupplyDemandType = 'I'
then null
else rsd.RequiredDate
end RequiredDate
,case
when rsd.SupplyDemandType = 'D'
then rsd.GrossRequiredFlag
else null
end GrossRequiredFlag
,case rsd.PlannedOrderQuantity
when 0
then case rsd.SupplyDemandType
when 'D'
then rsd.GrossRequiredQuantity * @afmultiplier
else null
end
else null
end GrossRequiredQuantity
,case rsd.PlannedOrderQuantity
when 0
then case rsd.SupplyDemandType
when 'S'
then rsd.ScheduledReceiptQuantity * @afmultiplier
else null
end
else null
end ScheduledReceiptQuantity
,rsd.ProjectedAvailableQuantity * @afmultiplier ProjectedAvailableQuantity
,case rsd.PlannedOrderQuantity
when 0 then null
else rsd.PlannedOrderQuantity * @afmultiplier
end PlannedOrderQuantity
,case
when rsd.SupplyDemandType = 'P'
then 'P'--'CUSTOM PROD INV'
else rsd.PeggingInformation
end PeggingType
,rsd.MessageCount Messages
,rsd.SupplyDemandKey SuperKey
from FS_Item im (readuncommitted)
join FS_ItemData imd (readuncommitted) on (im.ItemKey = imd.ItemKey)
left join FSDBMRTemp.dbo.FS_ReportSDASupplyDemand rsd (readuncommitted) on im.ItemKey = rsd.ItemKey
where rsd.ReportInstanceKey =@anReportInstanceID
order by ItemNumber, RequiredDate, TopLevelDemandKey, SupplyDemandType desc, rsd.SupplyDemandKey
-- delete Instance from FS_ReportSDASupplyDemand and FS_ReportSDASupplyDemand table
-- the 3rd parameter for usp_ReportDeleteInstance is for SequenceNo,we do not need here
exec usp_ReportDeleteInstance @anReportInstanceID, null , null
return
【问题讨论】:
-
您可以访问分析器吗?如果是这样,请运行跟踪并验证两种方法(Web 和 SSMS)是否使用相同的参数调用相同版本的相同存储过程。
-
您的 proc 的结尾似乎也删除了报告实例,这不允许您使用相同的参数重新运行 proc。您确定
@anReportInstanceID是在从 SQL 运行之前创建的吗? -
第四次转变,嗯?老学校。
标签: sql-server-2008 stored-procedures