오라클에서 PostgreSQL으로 DML (INSERT/UPDATE/DELETE) 쿼리를 변환 한 결과 이제는 동일한 행 집합을 생성하는지 확인해야합니다. 즉, oracle과 postgresql을 가정하면 동일한 행이 삭제됩니다 데이터베이스 업데이트가 PostgreSQL의 측면에서 등 같은 행을 갱신, 처음에 동일한 데이터를 포함, 내가 DML 문에 복귀 절을 사용할 수 있습니다 즉,PostgreSQL에 상응하는 Oracle INSERT ... RETURNING *;
INSERT INTO test(id, name) VALUES(42, 'foo') RETURNING *;
무엇 위의 문에 대한 좋은 것은 내가 돌아 '앞에 추가 할 수 있다는 것입니다 * '을 DML 구문에 적용하거나 테이블의 이름을 모른 채 모든 DML 구문에 적용하여 select 문과 같은 모든 행을 가져옵니다.
그러나 오라클 측에서는 빛나는 것 같지 않습니다. 문서에 따르면, Oracle 8i (나는 함께 일하고있다)는 RETURNING 절을 지원하지만, 결과를 변수에 저장해야하며, 수동으로 열 이름을 지정하는 대신 모든 결과 열을 가져 오는 분명한 방법이없는 것으로 보입니다.
따라서 테이블이나 열 이름을 하드 코딩하지 않고 '돌아 오는 *'PostgreSQL을 에뮬레이트 할 oracle 문 (또는 일련의 명령문)이 있는지 여부가 문제입니다.
fn('INSERT INTO test(id, name) VALUES(42, ''foo'')')
그것은 SQL 문에 의해 행 (일반적인 경우 또는 수정) 삽입의 집합을 반환한다 : 즉,이 같은 오라클 함수를 작성하는 방법이있다.
업데이트 : 실제로는 a very similar question (PostgreSQL이 아닌 SQL 서버에서 오라클로 변환)을 찾았습니다. 그래도 가능한 한 더 간단한 대답을 듣고 싶습니다.
Java에서이 SQL을 호출하고 있습니까? –
아니요, 실제로 파이썬 스크립트에서 호출하고 있습니다. 따라서, pername을 반환하는 colname, 1 colname2를 작성하려면 원본 구문을 파싱하고 열과 테이블 이름을 추출해야합니다. 사소한 일. – alexk
왜 지원이 중단되고 중단 된 Oracle 버전을 사용하고 있습니까? –