Postgre와 동등한 오라클SQL INSERT...돌아오는 *;
Oracle에서 Postgre로 많은 DML(INSERT/UPDATE/DEETE) 쿼리를 변환했습니다.SQL과 이제 동일한 행 집합을 생성하는지 확인해야 합니다. 즉, Oracle 및 postgresql 데이터베이스에 처음에 동일한 데이터가 포함되어 있다고 가정하고 동일한 행을 삭제하고 동일한 행을 업데이트하는 경우 등입니다.포스트그레에SQL 측면, DML 문과 함께 리턴 조항을 사용할 수 있습니다.
INSERT INTO test(id, name) VALUES(42, 'foo') RETURNING *;
위 문장의 좋은 점은 구조나 실행되는 테이블의 이름조차 모른 채 모든 DML 문장에 'returning *'라는 행을 붙이고 선택 문장처럼 모든 행을 얻을 수 있다는 것입니다.
하지만 오라클 쪽에서는 그다지 반짝이지 않는 것 같습니다.설명서에 따르면 오라클 8i(제가 작업하고 있는 제품)는 RETURNING 절을 지원하지만, 결과를 변수로 저장해야 하고, 수동으로 열 이름을 지정하는 대신 모든 결과 열을 얻을 수 있는 명확한 방법이 없는 것 같습니다.
따라서 문제는 Postgre를 에뮬레이션할 오라클 문(또는 문 시퀀스)이 있는지 여부입니다.하드코딩 테이블 또는 열 이름이 없는 SQL 'returning *'.즉, 다음과 같은 Oracle 함수를 작성할 수 있는 방법이 있습니까?
fn('INSERT INTO test(id, name) VALUES(42, ''foo'')')
SQL 문에 의해 삽입(또는 일반적인 경우 수정)된 행 집합을 반환해야 합니다.
업데이트: 실제로 매우 유사한 질문을 찾았습니다(Postgre가 아닌 SQL 서버에서 변환하기 위한 질문).SQL, Oracle)로 이동합니다.그래도 가능하다면 좀 더 간단한 대답을 듣고 싶습니다.
, , , , 를 포함하는 해결책을 상상할 수 있었지만, 분명 단순하지 않을 것입니다.저는 이전에 임의 유형의 레코드를 사용해야 하는 문제에 대해 XML과 관련된 이와 같은 해결책을 발견했습니다.그들은 아주 별난 놈들입니다.두 개의 개별 쿼리를 실행해야 할 것 같습니다.특히 Oracle 8i의 경우 대부분의 기능을 활용하지 못할 것으로 예상됩니다.
간단히 말해서, Postgres만큼 강력한 SQL Construct는 없다고 생각합니다.... RETURNING
Oracle의 절입니다.
특히 8i와 같은 이전 버전의 오라클에서는 현재는 불가능합니다.비슷한 질문에 대한 이 답변을 참조하십시오.
언급URL : https://stackoverflow.com/questions/8820789/oracle-equivalent-of-postgresql-insert-returning
'programing' 카테고리의 다른 글
*ngIf에 대해 Angular 8 HTML 템플릿에서 Enum 사용 (0) | 2023.10.30 |
---|---|
HTML 캔버스에서 텍스트의 높이를 어떻게 찾을 수 있습니까? (0) | 2023.10.30 |
서브쿼리의 출력을 조절할 수 있습니까? (0) | 2023.10.30 |
jQuery UI 슬라이더(프로그래밍 방식으로 설정) (0) | 2023.10.30 |
연결 테스트를 위한 범용 SELECT 쿼리 (0) | 2023.10.30 |