2010-07-22 4 views
0

저는 LINQ을 처음 사용하고 매개 변수없이 단일 정수를 반환하는 간단한 (작동하는) 저장 프로 시저에서 적절한 결과를 얻는 데 문제가 있습니다. . LINQ이 SPROC를 호출 할 때 작동하는 SQL 서버에서 직접 TableAdapter가 또는를 사용하여 실행하면 그 ReturnValue를 여기 120123.기본 LINQ to SQL 질문 : 저장 프로 시저를 호출하고 단일 반환 값을 검색하는 방법

같은 6 개 자리 값을 반환 항상 0입니다 내 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 

누락되었습니다.

create procedure TestProc() 
as 
return 1 

하지만 당신의 저장 프로 시저 아마 같은 결과를 선택하는 것입니다 :

답변

4

반환 값은 같은 저장 프로 시저의 리턴 값이다

create procedure TestProc() 
as 
select 1 as Col1 

가 첫 번째 열을 검색하려면 지정 그것으로 이름 :

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

EDIT : 귀하의 의견에 따라, 정수를 리턴하는 ored 프로 시저. (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 
+0

정확히 맞는 Andomar가 테이블에서 선택됩니다. SQL Server에서이를 실행할 때, 리턴 값은 항상 0이지만, 하나의 컬럼 (UniqueNumber), 하나의 행 결과 테이블을 리턴합니다. 숫자를 반환 값으로 반환하도록 sproc을 수정할 수 있습니까? (우리는 DBA가 없다). 내 질문에 기존 sproc 코드를 추가했습니다. – David

+0

굉장! Adomar에게 모든 도움을 주셔서 감사합니다 !! – David

관련 문제