【问题标题】:Basic LINQ to SQL Question: How to call stored procedure and retrieve single return value基本 LINQ to SQL 问题:如何调用存储过程并检索单个返回值
【发布时间】:2010-07-22 18:32:26
【问题描述】:

我是 LINQ 新手,从一个不带参数并返回单个整数的简单(工作)存储过程中获取正确结果时遇到问题。使用 LINQ 调用此存储过程时,它的返回值始终为 0。当使用 tableadapter 或直接在 sql 服务器上运行时,它可以工作,返回 6 位值,如 120123。

这是我的 LINQ 代码:

Dim MeetingManager As New MeetingManagerDataContext
Dim MeetingID As Integer = MeetingManager.NewMeetingID().ReturnValue

这是 NewMeetingID 过程:

    ALTER PROCEDURE [dbo].[NewMeetingID]
AS
SET NOCOUNT ON
BEGIN

    BEGIN TRANSACTION

    SELECT UniqueNumber
    FROM tblTakeANumber
    WHERE NumberID = 1

        BEGIN
            UPDATE tblTakeANumber SET UniqueNumber = UniqueNumber + 1
            WHERE (NumberID = 1)
        END

    COMMIT TRANSACTION

    RETURN
END

我错过了什么吗?

【问题讨论】:

    标签: sql-server vb.net linq-to-sql


    【解决方案1】:

    返回值是存储过程返回的值,如:

    create procedure TestProc()
    as 
    return 1
    

    但是您的存储过程可能正在选择一个结果,例如:

    create procedure TestProc()
    as 
    select 1 as Col1
    

    要检索第一列,请按名称指定它:

    Dim Col1 As Integer = TestDataCintext.TestProc().Single().Col1
    

    编辑:根据您的评论,以下是修改存储过程以返回整数的方法。注意(updlock) 和隔离级别:

    ALTER PROCEDURE [dbo].[NewMeetingID]
    AS
    SET NOCOUNT ON
    BEGIN
        SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
    
        BEGIN TRANSACTION
    
        declare @UniqueNumber int
    
        SELECT  @UniqueNumber = UniqueNumber
        FROM    tblTakeANumber (updlock)
        WHERE   NumberID = 1
    
        UPDATE  tblTakeANumber 
        SET     UniqueNumber = @UniqueNumber + 1
        WHERE   NumberID = 1
    
        COMMIT TRANSACTION
    
        RETURN @UniqueNumber
    END
    

    【讨论】:

    • 您完全正确的 Andomar,它是从表格中选择的。在 SQL 服务器上运行它时,返回值始终为 0,但它返回一列 (UniqueNumber)、一行结果表。我可以修改存储过程以将数字作为其返回值返回吗? (我们没有 DBA)。我已将现有的 sproc 代码添加到我的问题中。
    • 太棒了!感谢 Adomar 的所有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-02
    相关资源
    最近更新 更多