2008-11-06 3 views
6

OLEDB를 사용하는 ASP.NET 2.0 (VB) 응용 프로그램에서 Oracle 9i 데이터베이스 작업. 삽입 문이 값을 반환하도록하는 방법이 있습니까? 데이터베이스에 들어갈 때 번호를 입력하도록 시퀀스를 설정했지만 삽입 후 다시 돌아올 값이 필요하므로 코드 숨김 VB에 입력 한 집합을 조작 할 수 있습니다.삽입 문에서 값 반환

답변

8

일부 가능성 :

1) RETURNING 절 사용)

INSERT INTO emp (empno, ename) VALUES (emp_seq.NEXTVAL, 'ANDREWS') 
RETURNING empno INTO :variable; 

2 시퀀스 CURRVAL을 사용

INSERT INTO emp (empno, ename) VALUES (emp_seq.NEXTVAL, 'ANDREWS'); 
SELECT emp_seq.CURRVAL INTO :variable FROM DUAL; 

CURRVAL에 의해 생성 된 마지막 시퀀스 값을 반환 귀하의 세션.

+0

안녕하세요 Tony, SQL Server에도 해당 되는지요? SQL Server 2008 R2에도 동일한 기능이 필요합니다. –

+0

@ Sujay, 죄송합니다. SQL Server를 모르지만 http://bytes.com/topic/sql-server/answers/83675-return-primary-key-insert-statement –

+0

도움을 주셔서 감사합니다. 하지만 저장 프로 시저를 찾고 있지 않습니다. –

0

이 값이 데이터베이스에서 만드는 키인 경우 UUID를 테이블 키로 사용해야하고 코드에서 생성해야하는 좋은 예가 나온 것입니다.

이 방법을 사용하면 설정 속도가 빨라집니다.

2

오라클은 삽입 된 행의 주어진 열을 반환 할 수있는 "돌아 가기"라는 keywod를 갖고있는 것처럼 보이지만 시퀀스의 다음 값을 호출하여 "autoincrement"필드를 수동으로 설정해야 할 수도 있습니다.

확인 그것에 대해이 토론 : 그러나

http://forums.oracle.com/forums/thread.jspa?threadID=354998

, 당신은 항상 종류의 MySQLs 같은 last_insert_id()

0

첫째는 을 사용을 선택, 두 번째 쿼리에서 현재의 순서 번호를 선택할 수 있습니다 문을 사용하여 다음 시퀀스를 가져옵니다. 이 작업을 수행하려면 the Oracle dual table을 사용할 수 있습니다.

SELECT my_seq.nextval FROM dual 

는 후속 INSERT 문에서 검색 순서를 사용합니다.

INSERT ... 
INSERT ...