SQL 저장 프로 시저에서 행을 삽입하고 새 행에 IDENTITY INT를 반환하려고하면 내 C# 코드에서 가져옵니다.C에서 SQL INSERT OUTPUT 값 가져 오기
ALTER PROCEDURE the_proc @val_2 VARCHAR(10), @val_3 VARCHAR(10)
AS
BEGIN
SET NOCOUNT ON
INSERT INTO the_table (field_2, field_3)
OUTPUT INSERTED.field_1
VALUES (@val_2, @val_3)
END
C#에서 나는 LINQ를 사용하고 있지만 그 OUTPUT 값을 검색하는 방법은 퍼지입니다. SQL proc 선언에서 OUTPUT 매개 변수로 포함 시키려고 시도했지만 그 중 하나를 호출 할 수 없습니다 (예외로 인해 호출에서 제공되지 않음). 가장 가까운 것은 Db.designer.cs 코드에 들어가는 것입니다. 여기서 IExecuteResult result
ReturnValue에 0 (정확하지 않음)이 있지만 포함 된 결과 뷰 (result.ReturnValue Results View
)에 출력 된 값이 있는지 검사합니다.
key = (int)(db.TheProc(val2,val3).ReturnValue);
key
직접 프로 시저를 실행하여 실제로 ID가 int인지 확인 했습니까? INSERTED.field_1 대신 @@ Identity를 사용해야 할 수도 있습니다. – StriplingWarrior
@StriplingWarrior - OP의 절차는 정상적으로 작동합니다. 그의 접근법은 삽입 트리거가 테이블에 추가되면 올바르게 작동하므로'@@ identity '를 선택하면 더욱 강력 해집니다. –
@ StriplingWarrior - 내가 말했듯이, VS 디버거에서 결과를 검사 할 때 IDENTITY INT가 있지만 (ReturnValue에는 없습니다). 어떻게 든 돌아오고 있어요. 내가 무엇을 요구하는지 그 값을 검색하기위한 C#/Linq 관용구이다. 감사. –