2011-08-19 6 views
0

Ole DB 명령을 쓰고 있는데 하나의 특정 매개 변수를 반복해야합니다. 기본적으로 상황은 전달 된 매개 변수를 제어 할 수 없다는 것입니다 (이것은 (끔찍한) 프레임 워크로 처리됩니다). 저장 프로 시저를 만들 수 없습니다.Ole DB에서 매개 변수를 다시 사용 하시겠습니까?

쿼리는 프레임 워크는 오직 MYID, someValue와와 (순서대로) SomeOtherValue에 대한 값을 전달하는 것입니다

DELETE FROM dbo.MyTable WHERE MyId = ? ; 

INSERT INTO dbo.MyTable (MyId, SomeValue, SomeOtherValue) 
VALUES (?,?,?) 

문제 같이 보입니다. 삭제시 MyId 값을 "사용"할 수있는 방법이 있습니까? 또한 삽입을 위해 다시 액세스 할 수 있습니까?

백업 데이터베이스는 관련성이있는 경우 IBM DB2입니다.

+0

을 나는 더 이상 DB2 인스턴스가 없거나 나는 거라고 매우 작동하지만가한다고 그래서 ' 당신이 사용하는 SQL을 변경할 수 없다고 말하면서 필요에 따라 매개 변수를 두 배로 늘릴 수 있습니까? – billinkc

+0

쿼리를 수정할 수는 있지만 전달 된 매개 변수는 수정할 수 없습니다. 또한 쿼리를 저장된 proc로 바꿀 수 없습니다. 그리고 확실히 ADO.NET 공급자로 변경할 수 없습니다. 다소 제한된 조건에서 작업합니다. –

답변

1

아니요, OLE DB 연결의 경우? 하나의 매개 변수로 한 번만 매핑됩니다. ADO.NET 공급자를 사용할 때 장점 중 하나는 명명 된 매개 변수를 사용한다는 점입니다.

당신이 쿼리를 수정할 수 있다고 말했기 때문에, 그것은 간단해야합니다, 그냥 혼합하고 일치합니다. 그래서

DECLARE @MyId int 
SET @MyId = ? 
DELETE FROM dbo.MyTable WHERE MyId = @myid ; 

INSERT INTO dbo.MyTable (MyId, SomeValue, SomeOtherValue) 
VALUES (@myId,?,?) 

같은 지역 변수에 할당 할 OLE DB 매개 변수를 사용하여 ...

관련 문제