您必须匹配参数:RETURN不会填充OUTPUT参数:您对@itemid的赋值可以做到这一点。
DECLARE @item intEXEC RetrieveId @item OUTPUT, 'asf'
另外,您存储的过程太复杂了。对于从存储的proc返回数据来说,RETURN不是一个好的选择,而EXISTS则是不必要的。在这种情况下,如果未找到,@
itemId将为NULL
create procedure RetrieveId @itemId int output, @Name varchar(30)As Select @itemId = itemid from item where [Name] = @NameGO



