3

我有这个返回用户 ID 的存储过程:

ALTER PROCEDURE dbo.GetUserID
(
@TopicID int, 
    @AskerID int
)
AS
SELECT       @AskerID = Post.Pt_CreatedBy 
WHERE        (Topic.Tp_ID = @TopicID)
RETURN @AskerID

现在,当我使用 C# 从数据访问层页面调用它时,我使用了这个函数:

 MyDatabaseDataContext StudyAppdb = new MyDatabaseDataContext();

public int GetUserID(int TopicID)
    {
        int UserID = -1;
        UserID = db.GetUserID(TopicID, UserID);
        return UserID;
    }

但是 GetUserID 应该采用 (int , ref int).... 我不知道什么是 ref int 以及如何将它传递给函数。

4

2 回答 2

4

由于GetUserID应该采取(int , ref int),所以在调用此方法时还应显式使用ref关键字。与其调用该方法,db.GetUserID(TopicID, UserID)不如使用ref关键字,例如:

public int GetUserID(int TopicID)
{
    int UserID = -1;
    UserID = db.GetUserID(TopicID, ref UserID);
    return UserID;
}

您可以阅读有关ref关键字的更多信息。

于 2012-09-03T09:33:44.067 回答
2

您可以编写函数而不是存储过程,如下所示

CREATE FUNCTION dbo.GetUserID
(
@TopicID int, 
    @AskerID int
)
RETURNS INT
AS
BEGIN
SELECT       @AskerID = Post.Pt_CreatedBy 
WHERE        (Topic.Tp_ID = @TopicID)
RETURN @AskerID
END

或使用 OUTPUT 参数更改程序。然后您必须更改数据访问层代码以捕获该值..

于 2012-09-03T09:31:44.357 回答