gpt4 book ai didi

c# - 使用 LINQ-to-SQL 从 SQL Server 存储过程返回单行值

转载 作者:太空宇宙 更新时间:2023-11-03 14:43:12 25 4
gpt4 key购买 nike

我正在尝试从存储过程返回单行数据(多列)。我需要访问返回行的两列中的数据。

显然,我知道我可以做到以下几点:

 foreach (var x in usp_GetNextLessonResults)
{
// MANIPULATE DATA HERE
}

但是,由于只会返回一行,我不确定是否有更简单或更好的方法来完成此任务。

我还尝试在我的存储过程中添加两个 OUTPUT 参数,并尝试按如下方式引用它们:

 int lessonId = 0;
string importId = String.Empty;

_db.usp_GetNextLesson(Request.QueryString["regid"], ref lessonId, ref importId)

然而,这引发了错误

Argument 2 may not be passed with the ref keyword

关于我的 C# 代码中的两个输出参数。

有没有人对这个问题有更好或更多建议的解决方案?

ALTER PROCEDURE usp_GetNextLesson
(@RegistrationID VARCHAR(50),
@LearnerLessonID INT OUTPUT,
@ImportID VARCHAR(50) OUTPUT)
AS
BEGIN
SET NOCOUNT ON

-- DECLARE @LearnerLessonID INT
DECLARE @LearnerLessonOrder INT
DECLARE @LearnerCourseID INT

SELECT
@LearnerLessonID = [LearnerLesson].LearnerLessonID,
@LearnerLessonOrder = [LearnerLesson].[Order],
@LearnerCourseID = [LearnerLesson].LearnerCourseID
FROM
[dbo].[LearnerLesson] WITH(NOLOCK)
WHERE
[LearnerLesson].RegistrationID = @RegistrationID

DECLARE @NextLearnerLessonID INT

SELECT TOP 1
@NextLearnerLessonID = [LearnerLesson].LearnerLessonID
FROM
[dbo].[LearnerLesson] WITH(NOLOCK)
WHERE
[LearnerLesson].LearnerCourseID = @LearnerCourseID
AND [LearnerLesson].[Order] > @LearnerLessonOrder
ORDER BY
[LearnerLesson].[Order]

SELECT
[LearnerLesson].LearnerLessonID, [LearningObject].ImportID
FROM
[dbo].[LearnerLesson] WITH(NOLOCK)
INNER JOIN
[dbo].[LearningObject] WITH(NOLOCK) ON [LearnerLesson].LearningObjectID = [LearningObject].LearningObjectID
WHERE
[LearnerLesson].LearnerLessonID = @NextLearnerLessonID
END
GO

最佳答案

将 lessonId 设为可为 null 的 int。然后你可以将它用作输出变量。

整数? lessonId = 0;

关于c# - 使用 LINQ-to-SQL 从 SQL Server 存储过程返回单行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55696251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com