2012-07-23 120 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 
相關問題