3

UserID を返すストアド プロシージャがあります。

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 に答える