我的查询需要一些参数。
在SQL Server Management Studio的标准查询屏幕上执行它,它按预期工作,大约15秒后返回一些数据行。这是一个复杂的查询。
但是在存储过程中执行它只返回没有任何数据行的头文件。
此外,执行它只需要1~2秒。
不会返回或显示错误。
它的方面如下:
CREATE PROCEDURE [dbo].[sp_StoreProcedure]
@FDId INT
, @Year INT
, @NDate DATETIME
, @SDate DATETIME
, @MId INT
AS
BEGIN
SET NOCOUNT ON;
SELECT of complex query
END
它的调用很简单:
DECLARE @FDId INT
DECLARE @Year INT
DECLARE @NDate DATETIME
DECLARE @SDate DATETIME
DECLARE @MId INT
SET @FDId = 926
SET @Year = 2012
SET @NDate = '1900-01-01'
SET @SDate = GetDate()
SET @MId = 1
EXEC [outsystems].[dbo].[sp_StoreProcedure]
@FDId
, @Year
, @SDate
, @NDate
, @MId
但它返回一个空表。
这怎么可能? 我该怎么做才能解决它?
编辑 - >复杂查询有24个连接。在这里展示它将是巨大的。
答案 0 :(得分:2)
很容易犯错误。
宣布存储过程时:
CREATE PROCEDURE [dbo].[sp_StoreProcedure]
@FDId INT
, @Year INT
, @NDate DATETIME
, @SDate DATETIME
, @MId INT
执行时,您没有将参数传递到正确的序号位置:
EXEC [outsystems].[dbo].[sp_StoreProcedure]
@FDId
, @Year
, @SDate
, @NDate
, @MId
请注意,调用此过程时SDate
和NDate
是相反的方式。
这应该有效:
EXEC [outsystems].[dbo].[sp_StoreProcedure]
@FDId
, @Year
, @NDate
, @SDate
, @MId
如果您指定哪个参数在执行时(而不是依赖于序号位置),这将是一个问题,这将是一个更好的想法。