Sql server 2008 以一个参数作为输入执行存储过程

Sql server 2008 以一个参数作为输入执行存储过程,sql-server-2008,stored-procedures,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] @Stud

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

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作为输入,然后它给出所需的结果


请有人告诉我哪里出了问题

请使用此参数:

@StudentID varchar
这是一个1字符的字符串,因此传递的“123”被截断为“1”

相反

@StudentID int


您可以使用此参数:

@StudentID varchar
这是一个1字符的字符串,因此传递的“123”被截断为“1”

相反

@StudentID int


您已经将参数定义为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

您已经将参数定义为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

请正确格式化您的问题-当您执行[dbo].[SP_HouseHoldMembers]@StudentID='123'时,您在语句末尾是否有分号,或者这只是问题中的一个输入错误?请正确格式化您的问题-当您执行[dbo].[SP_HouseHoldMembers]@StudentID='123'时,你是在陈述的末尾加了分号,还是只是问题中的一个输入错误?谢谢你的帮助。多么可笑的错误:谢谢你的帮助。多么可笑的错误: