Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从ASPx页面向sqlserver发送ref int值?_C#_Sql_Sql Server_Data Access Layer - Fatal编程技术网

C# 如何从ASPx页面向sqlserver发送ref int值?

C# 如何从ASPx页面向sqlserver发送ref int值?,c#,sql,sql-server,data-access-layer,C#,Sql,Sql Server,Data Access Layer,我有一个返回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

我有一个返回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&如何将其传递给函数。

您可以编写一个函数,而不是下面给出的存储过程

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

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

由于
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;
}

您可以阅读更多信息。

只需声明sql数据库以访问其函数。