[英]Returning single row vaues from SQL Server stored procedure with LINQ-to-SQL
我试图从存储过程中返回一行数据(多列)。 我需要从返回的行的两列访问数据。
显然,我知道我可以执行以下操作:
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)
但是,这引发了一个错误
参数2可能无法与ref关键字一起传递
在我的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。 然后,您可以将其用作out变量。
int? lessonId = 0;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.