我正在使用存储过程。我的存储过程是
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
作为输入,然后它就会得到所需的结果。
请有人告诉我哪里出错了
答案 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