1

我正在使用存储过程。我的存储过程是

Create PROCEDURE [dbo].[SP_HouseHoldMembers]
(
@StudentID varchar
)
AS
BEGIN
SELECT MemberID,FirstName+''+LastName,Age,Sex,Education
FROM Student SD 
WHERE SD.StudentID=@StudentID
END

我像这样执行它:

EXEC [dbo].[SP_HouseHoldMembers] @StudentID='123'

但它没有显示结果,当我使用简单的查询将其123作为输入来执行它时,它会给出所需的结果。

请有人告诉我哪里出错了

4

2 回答 2

6

您使用此参数:

@StudentID varchar

这是一个1 字符的字符串,因此传递'123'被截断为'1'

反而;

@StudentID int

或者

@StudentID varchar(<insert appropriate size>)
于 2012-07-23T16:05:24.123 回答
2

您已将参数定义为varchar- 这意味着:1 个字符长度的可变长度字符串!

你需要给它varchar一个明确的长度!

Create PROCEDURE [dbo].[SP_HouseHoldMembers]
(@StudentID varchar(20) )
AS
BEGIN
   SELECT MemberID,FirstName + '' + LastName, Age, Sex, Education
   FROM Student SD 
    WHERE SD.StudentID = @StudentID
END
于 2012-07-23T16:05:31.240 回答