2012-07-23 58 views
1

我正在使用存储过程。我的存储过程是使用一个参数执行存储过程作为输入

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

我执行这样的:

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

但它不显示结果,当我只需使用简单的查询到该123作为输入执行它,然后它给预期的结果。

请有人告诉我要去的地方错了

+1

请正确格式化您的问题 - [在这里看到更多的信息](http://stackoverflow.com/editing-help) – freefaller 2012-07-23 16:04:49

+0

当你做了'EXEC [DBO] [SP_HouseHoldMembers] @ StudentID ='123。 '',你在语句结尾处是否有分号?(或者这只是问题中的拼写错误)? – 2012-07-23 16:05:33

回答

6

您使用此参数:

@StudentID varchar 

这是一个1 charactrer串,所以经过'123'被截断为'1'

相反;

@StudentID int 

@StudentID varchar(<insert appropriate size>) 
+2

谢谢你的帮助。是一个荒谬的错误:) – Aada 2012-07-23 16:06:45

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 
相关问题