1

我有一个为报告提取数据的存储过程。我的参数有问题。我有几个临时表和一些有效的连接,所以我在下面省略了它们。问题是这一行:

WHERE
SeminarDivision = @SeminarDivision AND SeminarType = @SeminarType

当我将这个 where 子句放入使用我的研讨会参数时,存储的过程不会返回任何内容但我需要根据这两个参数生成报告。那么参数去哪了?任何人都可以帮忙吗?

@StartDate DateTime,
@EndDate DateTime,
@SeminarDivision VARCHAR(50),
@SeminarType VARCHAR(50)
)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

      ... OMITTED    
SELECT 
    WL.PID,
    CONVERT(varchar(20), upper(substring(FirstName,1,1))+
        LOWER(substring(FirstName,2,19))) AS FirstName,
    CONVERT(varchar(20), upper(substring(LastName,1,1))+
        LOWER(substring(LastName,2,19))) AS LastName,
    S.SeminarDivision,
    S.SeminarType,
    S.StartDate,
    S.SeminarLocation
FROM 
    @tblWaitList WL
    INNER JOIN @tblSeminar S ON WL.SeminarGuid=S.SeminarGuid
WHERE
    SeminarDivision = @SeminarDivision AND SeminarType = @SeminarType
ORDER BY
    LastName,FirstName,StartDate
4

3 回答 3

1

首先,您的代码没有任何问题,当询问这些参数去哪里时,它们准确地去您放置它们的地方。问题是 - SeminarDivision 和 SeminarType 输入的数据是正确的数据类型吗?例如,作为测试,将代码复制到编辑器内的新 sql 代码查询中。如果您的值很好,则运行不带 where 的命令。现在更改位置

WHERE SeminarDivision = "Possible_Value"

其中 Possible_Value 应该是一个可能的值......如果它返回行,很好......现在添加第二个条件也硬编码一个值:

WHERE SeminarDivision = "Possble_Value" AND SeminarType="Possible_Value_2"

获取任何数据?你有可能想要ORAND

于 2011-11-01T14:54:03.670 回答
1

您的参数的“位置”没有任何问题。

如果您没有收到任何数据,可能是因为您没有填充数据,@tblWaiList或者是因为记录与您的子句@tblSeminar不匹配。WHERE

通过执行print @SeminarDivision等检查您的参数是否具有您认为它们的值。

SELECT * FROM @tblSeminar也可以给你一个线索。

于 2011-11-01T14:56:14.377 回答
1

您没有为调用正确设置参数。

在 SSMS 中尝试这个,相应地更改值

EXEC Proc '20110101', '20111101', 'PossibleDivision', 'PossibleType'

如果失败,请向我们展示“OMITTED”代码

如果可行,请向我们展示您如何从客户端代码中调用它

于 2011-11-01T15:14:12.740 回答