나는 그렇게 보이는 저장 프로 시저가 있습니다.sqlCommand.ExecuteNonQuery()를 사용하여 범위 ID를 반환합니다.
ALTER PROCEDURE dbo.addPackage(
@PackageStatus VARCHAR(50) = null,
@OrgCode VARCHAR(50) = null,
@SystemID VARCHAR(50) = null,
@ID int OUTPUT
)
AS
BEGIN
insert into package_table
(
PackageStatus,
OrgCode,
SystemID
)
values
(@PackageStatus,
@OrgCode,
@SystemID
)
SET @ID = SCOPE_IDENTITY()
END
그리고 내 기능은 SQL 명령에 다음 매개 변수를 추가하고 내가 가지고 있지만 출력 파라미터 선언하고 설정 evne sqlCommand.ExecuteNonQuery();
List<SqlParameter> parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter("@PackageStatus", package.PackageStatus));
parameters.Add(new SqlParameter("@OrgCode", package.OrgCode));
parameters.Add(new SqlParameter("@SystemID", package.SystemID));
SqlParameter outParameter = new SqlParameter("@ID", SqlDbType.Int);
outParameter.Direction = ParameterDirection.Output;
parameters.Add(outParameter);
하지만 저장된 porcuedure에서 다시 0가 계속 호출 저장 프로 시저가 종료되기 전에 ID에 대한 자동 증가 값으로 레코드가 성공적으로 추가되었지만 출력 매개 변수를 다시 가져올 때 ID가 반환되지 않습니다. 0으로 설정됩니다.
제안 사항?
단순히 출력 매개 변수 대신 스칼라 값을 반환 할 수 있습니까? IMHO. 다루기가 더 쉽습니다. – sfuqua
코드가 올바르지 않은 것 같습니다. 매개 변수 이름은 iD (소문자 I)로 정의됩니다. SET 문은 ID (대문자 I)를 사용하고 코드는 출력 매개 변수의 값을 얻기 위해 완전히 다른 APID를 사용합니다. 사용중인 실제 코드를 게시 할 수 있습니까? –
메모장에서 코드를 변경했습니다. ++. 실제 값은 정확합니다. 나는 단지 그것을 가능한 한 포괄적으로 만들고 싶었다. 그것이 오류의 원인이 아니 었습니다. 그때부터 문제가 무엇인지 발견했습니다. – gsirianni