使用一个参数作为输入执行存储过程

时间:2012-07-23 16:02:21

标签: sql-server-2008 stored-procedures

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

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作为输入,然后它就会得到所需的结果。

请有人告诉我哪里出错了

2 个答案:

答案 0 :(得分:6)

您使用此参数:

@StudentID varchar

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

相反;

@StudentID int

@StudentID varchar(<insert appropriate size>)

答案 1 :(得分: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