C# 如何从ASPx页面向sqlserver发送ref int值?
我有一个返回UserID的存储过程: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
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数据库以访问其函数。